{
  "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": "",
          "name": "EdElement",
          "members": [
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "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"
          },
          "customElement": true,
          "modulePath": "internal/ed-element.js"
        }
      ],
      "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"
            },
            {
              "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 `empty_state`). 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' | 'building' | 'clock' | 'coffee' | 'construction' | 'creditcard' | 'edit' | 'folder' | 'gas_pump' | 'inbox' | 'lock' | 'mail' | 'note' | 'placeholder' | 'scan' | 'search' | 'stop' | 'tag' | 'user' | 'user_group' | 'warning' | '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
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 `empty_state`). 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' | 'building' | 'clock' | 'coffee' | 'construction' | 'creditcard' | 'edit' | 'folder' | 'gas_pump' | 'inbox' | 'lock' | 'mail' | 'note' | 'placeholder' | 'scan' | 'search' | 'stop' | 'tag' | 'user' | 'user_group' | 'warning' | '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"
            },
            {
              "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 * @since 1.0\n * @playwright getByRole('img', { name: '…' })\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",
          "since": "1.0",
          "playwright": "getByRole('img', { name: '…' })",
          "tagName": "ed-icon",
          "customElement": true,
          "modulePath": "components/icon/icon.js",
          "definitionPath": "components/icon/icon.js",
          "cssProperties": [],
          "cssStates": [],
          "slots": []
        }
      ],
      "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": "translations/en.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'This content was generated by AI', back: 'Back', cancel: 'Cancel', carousel: 'Carousel', chooseDate: 'Choose a date', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Choose a time', clearEntry: 'Clear entry', close: 'Close', collapse: 'Collapse', 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', 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', finish: 'Finish', from: 'from', goToSlide: (slide, count) => `Go to slide ${slide} of ${count}`, halfyear: 'Half-year', hidePassword: 'Hide password', increment: 'Increment', loading: 'Loading', 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', noOptions: 'No options', 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 => { if (num === 0) return 'No entries'; if (num === 1) return '1 entry'; return `${num} entries`; }, numEntriesLoaded: num => { if (num === 0) return 'No entries loaded'; if (num === 1) return '1 entry loaded'; return `${num} entries loaded`; }, 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 => { if (num === 0) return 'None selected'; return `${num} selected`; }, numTotal: num => `${num} total`, ok: 'OK', onThisPage: 'On this page', optionPosition: (label, position, total) => `${label}, ${position} of ${total}`, page: 'Page', pauseAnimation: 'Pause animation', 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', resize: 'Resize', 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', numRowsSelected: num => { if (num === 0) return 'No rows selected'; if (num === 1) return '1 row selected'; return `${num} rows selected`; }, pageChanged: (page, total) => `Page ${page} of ${total}`, reorderRow: 'Reorder row', resizeColumn: 'Resize column', rowDropped: position => `Row dropped at position ${position}`, 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', selectAllRows: 'Select all rows', selectDate: 'Select date', selectDateTime: 'Select date and time', selectRow: 'Select row', 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}`, 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', until: 'until', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', // Calendar week mode weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Step ${step} of ${total}`, wizardStepCompleted: step => `${step}, completed`, 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', documentViewerLoadErrorHint: 'Check your internet connection', 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)`, $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",
          "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 in table column `render()` callbacks.\nThis avoids 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<EdTable columns={[\n  { key: 'status', label: 'Status',\n    render: (value) => jsxToHtml(<StatusBadge status={value} />) },\n]} />\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"
            }
          ],
          "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."
        }
      ],
      "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": "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"
            }
          },
          "description": "Call once when a `<dialog>` is opened via `showModal()`."
        },
        {
          "kind": "function",
          "name": "unregisterModalDialog",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "description": "Call once when a modally-opened `<dialog>` closes. Must be paired with `registerModalDialog()`."
        },
        {
          "kind": "function",
          "name": "isModalOpen",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "description": "Returns `true` while at least one modal dialog is open."
        },
        {
          "kind": "function",
          "name": "onModalStateChange",
          "return": {
            "type": {
              "text": "() => void"
            }
          },
          "parameters": [
            {
              "name": "l",
              "type": {
                "text": "() => void"
              }
            }
          ],
          "description": "Subscribe to modal-state changes. The listener is called synchronously after any\n`registerModalDialog` or `unregisterModalDialog` call. 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": "isModalOpen",
          "declaration": {
            "name": "isModalOpen",
            "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"
              }
            },
            {
              "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"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "test",
              "parameters": [
                {
                  "name": "slotName",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "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 remove the attribute to clear the error.",
              "attribute": "error"
            },
            {
              "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 remove the attribute to clear the warning.",
              "attribute": "warning"
            },
            {
              "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
            },
            {
              "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'"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "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"
              }
            },
            {
              "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"
              }
            },
            {
              "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
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 remove the attribute to clear the error.",
              "fieldName": "error"
            },
            {
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning"
            },
            {
              "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"
            },
            {
              "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/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. Rather than needing\ncustom translations and error messages, you can simply rely on the element \"formControl\" in your shadow dom."
        }
      ],
      "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"
        },
        {
          "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.",
              "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
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "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"
            },
            {
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('progressbar')",
          "tagName": "ed-progress-ring",
          "customElement": true,
          "modulePath": "components/progress-ring/progress-ring.js",
          "definitionPath": "components/progress-ring/progress-ring.js",
          "cssStates": [],
          "events": []
        }
      ],
      "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": "invalid",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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"
            },
            {
              "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,
              "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
            },
            {
              "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
            },
            {
              "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"
              },
              "type": {
                "text": "setValue(_args: Parameters<EdFormAssociatedElement['setValue']>) => void"
              }
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the button.",
              "type": {
                "text": "click() => void"
              }
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the button.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the button.",
              "type": {
                "text": "blur() => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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'",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "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"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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",
              "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"
            },
            {
              "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"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('button' | 'link')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('button' | 'link')",
          "dependencies": [
            "ed-icon",
            "ed-progress-ring"
          ],
          "tagName": "ed-button",
          "customElement": true,
          "modulePath": "components/button/button.js",
          "definitionPath": "components/button/button.js"
        }
      ],
      "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 DOM when the description slot is filled; hidden when `collapsible` and 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"
            },
            {
              "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
            },
            {
              "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.",
              "type": {
                "text": "show() => void"
              }
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the notification.",
              "type": {
                "text": "hide() => void"
              }
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('status' | 'alert')\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 DOM when the description slot is filled; hidden when `collapsible` and 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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('status' | 'alert')",
          "dependencies": [
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-notification",
          "customElement": true,
          "modulePath": "components/notification/notification.js",
          "definitionPath": "components/notification/notification.js",
          "cssProperties": [],
          "cssStates": []
        }
      ],
      "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": "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
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the toast. Returns a promise that resolves when the opening animation completes.",
              "type": {
                "text": "show() => void"
              }
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the toast. Returns a promise that resolves when the closing animation completes.",
              "type": {
                "text": "hide() => void"
              }
            },
            {
              "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": "method",
              "name": "#syncDismissibleRegistration",
              "privacy": "private",
              "description": "Synchronizes this toast's presence in the dismissible stack. The toast is registered when it\nis open and no modal dialog is blocking it; it is unregistered otherwise.\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": "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 toast opens. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the toast has fully opened and all animations are complete.",
              "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.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the toast has fully closed 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 toast's theme variant.",
              "fieldName": "variant"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByRole('group', { name: '…' })\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.\n * @event ed-after-show - Emitted after the toast has fully opened and all animations are complete.\n * @event ed-hide - Emitted before the toast closes. Cancelable; calling `preventDefault()` keeps it open, with its\n *  dismiss timer still running.\n * @event ed-after-hide - Emitted after the toast has fully closed and all animations are complete.\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",
          "since": "1.0",
          "playwright": "getByRole('group', { name: '…' })",
          "dependencies": [
            "ed-notification"
          ],
          "tagName": "ed-toast-item",
          "customElement": true,
          "modulePath": "components/toast-item/toast-item.js",
          "definitionPath": "components/toast-item/toast-item.js",
          "cssProperties": [],
          "cssStates": []
        }
      ],
      "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": "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."
            },
            {
              "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."
            },
            {
              "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": "#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": "#handleSlotChange",
              "privacy": "private",
              "readonly": true,
              "description": "Keeps the stack's top-layer membership in sync with its contents: promote it (showPopover) when\nit gains a toast and demote it (hidePopover) when it empties. Promoting at the moment a toast\nappears places the stack above whatever dialog is currently open (top-layer paints in promotion\norder). Driven by `slotchange`, so it also covers 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"
            },
            {
              "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> }`.",
              "type": {
                "text": "create(messageOrOptions: string | ToastOptions, options?: ToastOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "getOrCreate",
              "static": true,
              "return": {
                "type": {
                  "text": "EdToastStack"
                }
              },
              "parameters": [
                {
                  "name": "placement",
                  "default": "'top-end'",
                  "type": {
                    "text": "Placement"
                  }
                }
              ],
              "description": "Returns the first existing `<ed-toast-stack>` in `document.body` whose `placement` matches,\nor creates a new one and appends it to `document.body`.\n\nEnables the one-liner:\n```ts\nEdToastStack.getOrCreate().create({ variant: 'success', title: 'Saved' });\n```",
              "type": {
                "text": "getOrCreate(placement: Placement = 'top-end') => EdToastStack"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-toast-item"
          ],
          "tagName": "ed-toast-stack",
          "customElement": true,
          "modulePath": "components/toast-stack/toast-stack.js",
          "definitionPath": "components/toast-stack/toast-stack.js",
          "cssStates": [],
          "events": []
        }
      ],
      "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)",
          "description": "Shows a toast notification via the default `<ed-toast-stack>` (top-end placement).\nCreates the stack element and appends it to `document.body` if it does not exist yet.\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": "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": "internal/sort-types.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "components/data-grid/data-grid.types.js",
      "declarations": [],
      "exports": [
        {
          "kind": "js",
          "name": "SortEntry",
          "declaration": {
            "name": "SortEntry",
            "module": "../../internal/sort-types.js"
          }
        },
        {
          "kind": "js",
          "name": "SortOrder",
          "declaration": {
            "name": "SortOrder",
            "module": "../../internal/sort-types.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/column-reorder.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdColumnReorderEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdColumnReorderEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/column-reorder.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdColumnReorderEvent",
          "declaration": {
            "name": "EdColumnReorderEvent",
            "module": "events/column-reorder.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/column-resize.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdColumnResizeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdColumnResizeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/column-resize.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdColumnResizeEvent",
          "declaration": {
            "name": "EdColumnResizeEvent",
            "module": "events/column-resize.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": "events/create.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCreateEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/create.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdCreateEvent",
          "declaration": {
            "name": "EdCreateEvent",
            "module": "events/create.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"
            }
          ],
          "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",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "{ row: RowData; rowId: unknown } | undefined"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "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": "events/load-more.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdLoadMoreEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "{ offset: number }"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/load-more.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdLoadMoreEvent",
          "declaration": {
            "name": "EdLoadMoreEvent",
            "module": "events/load-more.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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "kind": "field",
              "name": "cleanup",
              "type": {
                "text": "ReturnType<typeof autoUpdate> | undefined"
              },
              "privacy": "private"
            },
            {
              "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"
            },
            {
              "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": "'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'right' | 'right-start' | 'right-end' | 'left' | '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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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.",
              "type": {
                "text": "reposition() => void"
              }
            },
            {
              "kind": "field",
              "name": "updateHoverBridge",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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": "'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'right' | 'right-start' | 'right-end' | 'left' | '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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "name": "sync",
              "type": {
                "text": "'width' | 'height' | 'both'"
              },
              "description": "Syncs the popup's width or height to that of the anchor element.",
              "fieldName": "sync"
            },
            {
              "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": "Popup is a utility that lets you declaratively anchor \"popup\" containers to another element.",
          "jsDoc": "/**\n * @summary Popup is a utility that lets you declaratively anchor \"popup\" containers to another element.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/popup\n * @status experimental\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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-popup",
          "customElement": true,
          "modulePath": "components/popup/popup.js",
          "definitionPath": "components/popup/popup.js",
          "cssStates": []
        }
      ],
      "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 component's base wrapper, an `<ed-popup>` element.",
              "name": "base"
            },
            {
              "description": "The popup's exported `popup` part. Use this to target the tooltip's popup container.",
              "name": "base__popup"
            },
            {
              "description": "The popup's exported `arrow` part. Use this to target the tooltip's arrow.",
              "name": "base__arrow"
            },
            {
              "description": "The tooltip's body where its content is rendered.",
              "name": "body"
            }
          ],
          "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": "'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | '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"
            },
            {
              "kind": "field",
              "name": "anchor",
              "type": {
                "text": "null | Element"
              },
              "default": "null"
            },
            {
              "kind": "field",
              "name": "eventController",
              "privacy": "private",
              "default": "new AbortController()"
            },
            {
              "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`) —\nthe icon-only case where the tooltip text is the only label the control has."
            },
            {
              "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.",
              "type": {
                "text": "show() => void"
              }
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the tooltip",
              "type": {
                "text": "hide() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | '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"
            },
            {
              "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": "Tooltips display additional information based on a specific action.",
          "jsDoc": "/**\n * @summary Tooltips display additional information based on a specific action.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tooltip\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('tooltip')\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 base - The component's base wrapper, an `<ed-popup>` element.\n * @csspart base__popup - The popup's exported `popup` part. Use this to target the tooltip's popup container.\n * @csspart base__arrow - The popup's exported `arrow` part. Use this to target the tooltip's arrow.\n * @csspart body - The tooltip's body where its content is rendered.\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('tooltip')",
          "dependencies": [
            "ed-popup"
          ],
          "tagName": "ed-tooltip",
          "customElement": true,
          "modulePath": "components/tooltip/tooltip.js",
          "definitionPath": "components/tooltip/tooltip.js",
          "cssStates": []
        }
      ],
      "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": "",
          "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
            },
            {
              "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"
              },
              "type": {
                "text": "isExpandableItem(node: Node) => node is EdExpandableItem"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "getChildrenItems({ includeDisabled = true }: { includeDisabled?: boolean } = {}) => EdExpandableItem[]"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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.\nItems 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.",
          "jsDoc": "/**\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 *  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 * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu-item\n * @status experimental\n * @since 1.0\n * @playwright getByRole('link', { name: '…' })\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",
          "since": "1.0",
          "playwright": "getByRole('link', { name: '…' })",
          "dependencies": [
            "ed-icon",
            "ed-tooltip"
          ],
          "tagName": "ed-side-menu-item",
          "customElement": true,
          "modulePath": "components/side-menu-item/side-menu-item.js",
          "definitionPath": "components/side-menu-item/side-menu-item.js"
        }
      ],
      "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"
            }
          ],
          "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/pagination-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdPaginationChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "{ page: number; pageSize: number }"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/pagination-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdPaginationChangeEvent",
          "declaration": {
            "name": "EdPaginationChangeEvent",
            "module": "events/pagination-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/row-collapse.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRowCollapseEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "{ row: RowData; rowId: unknown }"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/row-collapse.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdRowCollapseEvent",
          "declaration": {
            "name": "EdRowCollapseEvent",
            "module": "events/row-collapse.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/row-dblclick.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRowDblclickEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "{ row: HTMLElement; data?: RowData; rowIndex: number }"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/row-dblclick.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdRowDblclickEvent",
          "declaration": {
            "name": "EdRowDblclickEvent",
            "module": "events/row-dblclick.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/row-expand.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRowExpandEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "{ row: RowData; rowId: unknown }"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/row-expand.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdRowExpandEvent",
          "declaration": {
            "name": "EdRowExpandEvent",
            "module": "events/row-expand.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/row-reorder.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRowReorderEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdRowReorderEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/row-reorder.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdRowReorderEvent",
          "declaration": {
            "name": "EdRowReorderEvent",
            "module": "events/row-reorder.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "widgets/ed-scan/ed-scan.types.js",
      "declarations": [],
      "exports": []
    },
    {
      "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",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "SavedFile[]"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "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": "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/scroll-end.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdScrollEndEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "{ scrollTop: number; scrollLeft: number }"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/scroll-end.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdScrollEndEvent",
          "declaration": {
            "name": "EdScrollEndEvent",
            "module": "events/scroll-end.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/scroll-start.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdScrollStartEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "{ scrollTop: number; scrollLeft: number }"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/scroll-start.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdScrollStartEvent",
          "declaration": {
            "name": "EdScrollStartEvent",
            "module": "events/scroll-start.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": "events/select.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSelectEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/select.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdSelectEvent",
          "declaration": {
            "name": "EdSelectEvent",
            "module": "events/select.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/grid-host.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "internal/grid-resize.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "MIN_COLUMN_WIDTH",
          "type": {
            "text": "number"
          },
          "default": "80",
          "description": "Minimum column width in pixels, shared across table and data-grid resize logic."
        },
        {
          "kind": "variable",
          "name": "RESIZE_STEP",
          "type": {
            "text": "number"
          },
          "default": "16",
          "description": "Pixels added or removed per arrow press when resizing a column from its separator."
        },
        {
          "kind": "variable",
          "name": "KEYBOARD_RESIZE_MAX",
          "type": {
            "text": "number"
          },
          "default": "2000",
          "description": "Upper bound for keyboard column resize; also the separator's `aria-valuemax`."
        },
        {
          "kind": "class",
          "description": "Manages column resizing via pointer events.\nUses raw `clientX` coordinates rather than a drag helper for sub-pixel accuracy.\n\nCall `startResize()` from a `pointerdown` handler on the column resize handle.",
          "name": "GridResizeController",
          "members": [
            {
              "kind": "field",
              "name": "options",
              "type": {
                "text": "GridResizeOptions"
              },
              "privacy": "private",
              "default": "options"
            },
            {
              "kind": "field",
              "name": "cancelActiveGesture",
              "type": {
                "text": "(() => void) | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Tears down the currently active gesture's document listeners, if any."
            },
            {
              "kind": "method",
              "name": "hostConnected"
            },
            {
              "kind": "method",
              "name": "hostDisconnected"
            },
            {
              "kind": "method",
              "name": "startResize",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  },
                  "description": "The header cell element being resized."
                },
                {
                  "name": "initialEvent",
                  "type": {
                    "text": "PointerEvent"
                  },
                  "description": "The `pointerdown` event that initiated the resize."
                },
                {
                  "name": "columnWidths",
                  "type": {
                    "text": "number[]"
                  },
                  "description": "Mutable array of current column widths (in pixels). Updated in-place during the drag."
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  },
                  "description": "Index into `columnWidths` for the column being resized."
                },
                {
                  "name": "applyWidths",
                  "type": {
                    "text": "(widths: number[]) => void"
                  },
                  "description": "Callback invoked on every pointermove so the host can push widths to the DOM."
                }
              ],
              "description": "Begins a column resize gesture."
            }
          ],
          "jsDoc": "/**\n * Manages column resizing via pointer events.\n * Uses raw `clientX` coordinates rather than a drag helper for sub-pixel accuracy.\n *\n * Call `startResize()` from a `pointerdown` handler on the column resize handle.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "MIN_COLUMN_WIDTH",
          "declaration": {
            "name": "MIN_COLUMN_WIDTH",
            "module": "internal/grid-resize.js"
          }
        },
        {
          "kind": "js",
          "name": "RESIZE_STEP",
          "declaration": {
            "name": "RESIZE_STEP",
            "module": "internal/grid-resize.js"
          }
        },
        {
          "kind": "js",
          "name": "KEYBOARD_RESIZE_MAX",
          "declaration": {
            "name": "KEYBOARD_RESIZE_MAX",
            "module": "internal/grid-resize.js"
          }
        },
        {
          "kind": "js",
          "name": "GridResizeController",
          "declaration": {
            "name": "GridResizeController",
            "module": "internal/grid-resize.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/table-cell/table-cell.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTableCell",
          "cssParts": [
            {
              "description": "The cell's content wrapper.",
              "name": "base"
            },
            {
              "description": "The wrapper around the cell's content and, in a header cell, its sort indicator.",
              "name": "label"
            },
            {
              "description": "The sort direction icon (header cells only).",
              "name": "sort-indicator"
            },
            {
              "description": "The resize grip (header cells only).",
              "name": "resize-handle"
            }
          ],
          "slots": [
            {
              "description": "The cell's content.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "resizeDrag",
              "type": {
                "text": "DraggableElement | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "resizeHandleEl",
              "type": {
                "text": "HTMLElement | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "resizePending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "startWidth",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "startX",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "sortable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allow sorting by this column (header cells only). Inherits from parent `<ed-table sortable>` when not set.",
              "attribute": "sortable"
            },
            {
              "kind": "field",
              "name": "sortKey",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Key emitted in sort events. Defaults to the cell's text content.",
              "attribute": "sort-key"
            },
            {
              "kind": "field",
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Show a resize handle on this cell (header cells only).",
              "attribute": "resizable"
            },
            {
              "kind": "field",
              "name": "minWidth",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Minimum column width (e.g. `8rem`, `120px`). Applied as CSS min-width.",
              "attribute": "min-width"
            },
            {
              "kind": "field",
              "name": "align",
              "type": {
                "text": "'start' | 'center' | 'end' | undefined"
              },
              "description": "Text alignment for this cell. Applied as `text-align` on the host.",
              "attribute": "align",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "colspan",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Column span for multi-column headers. Sets the cell to span multiple columns.",
              "attribute": "colspan",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "rowspan",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Row span for multi-column headers. Sets the cell to span multiple rows.",
              "attribute": "rowspan",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "updateRole",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateSortableTabStop",
              "privacy": "private",
              "description": "A sortable leaf header cell is itself a tab stop, so it can be sorted from the\nkeyboard (Enter/Space, handled by the parent ed-table) — matching the WAI-ARIA\ntable pattern where interactive controls sit in the natural tab order. Group/\nspanning headers (colspan > 1) are not sortable columns and stay out of the tab order.\nNo wrapping <button> is used: the cell's slot can hold arbitrary content and the\nresize handle is a sibling, so a button would nest interactive content."
            },
            {
              "kind": "method",
              "name": "updateResizeHandle",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "{ column: string, width: number }"
              },
              "description": "Emitted by a header cell when its resize handle is dragged. Bubbles and is composed, so `ed-table` and `ed-data-grid` see it too and document it as well.",
              "name": "ed-column-resize",
              "reactName": "onEdColumnResize",
              "eventName": "EdColumnResizeEvent"
            }
          ],
          "attributes": [
            {
              "name": "sortable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allow sorting by this column (header cells only). Inherits from parent `<ed-table sortable>` when not set.",
              "fieldName": "sortable"
            },
            {
              "name": "sort-key",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Key emitted in sort events. Defaults to the cell's text content.",
              "fieldName": "sortKey"
            },
            {
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Show a resize handle on this cell (header cells only).",
              "fieldName": "resizable"
            },
            {
              "name": "min-width",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Minimum column width (e.g. `8rem`, `120px`). Applied as CSS min-width.",
              "fieldName": "minWidth"
            },
            {
              "name": "align",
              "type": {
                "text": "'start' | 'center' | 'end' | undefined"
              },
              "description": "Text alignment for this cell. Applied as `text-align` on the host.",
              "fieldName": "align"
            },
            {
              "name": "colspan",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Column span for multi-column headers. Sets the cell to span multiple columns.",
              "fieldName": "colspan"
            },
            {
              "name": "rowspan",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Row span for multi-column headers. Sets the cell to span multiple rows.",
              "fieldName": "rowspan"
            },
            {
              "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 to cells inside the header row.",
              "name": "header"
            },
            {
              "description": "Applied when the header row is sticky.",
              "name": "sticky"
            },
            {
              "description": "Applied when the column is sortable.",
              "name": "sortable"
            },
            {
              "description": "Applied while the column is sorted ascending.",
              "name": "sort-asc"
            },
            {
              "description": "Applied while the column is sorted descending.",
              "name": "sort-desc"
            },
            {
              "description": "Applied while more than one column is sorted.",
              "name": "multi-sort"
            },
            {
              "description": "Applied to the first data column's cells.",
              "name": "first-column"
            },
            {
              "description": "Applied when the cell's row is selected.",
              "name": "selected"
            },
            {
              "description": "Applied when the table allows multi-line cell content.",
              "name": "multi-line"
            },
            {
              "description": "Applied for the compact density.",
              "name": "compact"
            },
            {
              "description": "Applied for the spacious density.",
              "name": "spacious"
            },
            {
              "description": "Applied when the column is resizable.",
              "name": "resizable"
            },
            {
              "description": "Applied when the cell spans rows.",
              "name": "spanning"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A table cell that functions as either a `columnheader` or `gridcell` depending on its context.",
          "jsDoc": "/**\n * @summary A table cell that functions as either a `columnheader` or `gridcell` depending on its context.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table\n * @status experimental\n * @since 1.0\n * @playwright getByRole('cell' | 'columnheader')\n *\n * @dependency ed-icon\n *\n * @slot - The cell's content.\n *\n * @event {{ column: string, width: number }} ed-column-resize - Emitted by a header cell when its resize handle is\n *   dragged. Bubbles and is composed, so `ed-table` and `ed-data-grid` see it too and document it as well.\n *\n * @csspart base - The cell's content wrapper.\n * @csspart label - The wrapper around the cell's content and, in a header cell, its sort indicator.\n * @csspart sort-indicator - The sort direction icon (header cells only).\n * @csspart resize-handle - The resize grip (header cells only).\n *\n * @cssstate header - Applied to cells inside the header row.\n * @cssstate sticky - Applied when the header row is sticky.\n * @cssstate sortable - Applied when the column is sortable.\n * @cssstate sort-asc - Applied while the column is sorted ascending.\n * @cssstate sort-desc - Applied while the column is sorted descending.\n * @cssstate multi-sort - Applied while more than one column is sorted.\n * @cssstate first-column - Applied to the first data column's cells.\n * @cssstate selected - Applied when the cell's row is selected.\n * @cssstate multi-line - Applied when the table allows multi-line cell content.\n * @cssstate compact - Applied for the compact density.\n * @cssstate spacious - Applied for the spacious density.\n * @cssstate resizable - Applied when the column is resizable.\n * @cssstate spanning - Applied when the cell spans rows.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByRole('cell' | 'columnheader')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-table-cell",
          "customElement": true,
          "modulePath": "components/table-cell/table-cell.js",
          "definitionPath": "components/table-cell/table-cell.js",
          "cssProperties": []
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTableCell",
            "module": "components/table-cell/table-cell.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-table-cell",
          "declaration": {
            "name": "EdTableCell",
            "module": "components/table-cell/table-cell.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/table-row/table-row.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTableRow",
          "cssProperties": [
            {
              "description": "The height of this row, read by the cells inside it. Set it here to give one row a height, or on `ed-table` for all of them. Unset, each cell falls back to its density: `var(--ed-size-6)` compact, `var(--ed-size-8)` default, `var(--ed-size-12)` spacious.",
              "name": "--ed-table-row-height"
            }
          ],
          "slots": [
            {
              "description": "The row's cells. Must be `<ed-table-cell>` elements.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the row is selected.",
              "attribute": "selected",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "multiLine",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allow cells in this row to wrap content across multiple lines instead of truncating.",
              "attribute": "multi-line",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "propagateToChildren",
              "privacy": "private",
              "parameters": [
                {
                  "name": "prop",
                  "type": {
                    "text": "'header' | 'multiLine' | 'selected' | 'density'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "assignColumnIndices",
              "privacy": "private",
              "description": "ARIA requires each `aria-colindex` to be \"less than or equal to the number of columns in the\nfull table\", so this has to address exactly the columns `aria-colcount` counts.\n\nTwo things follow. Spacer cells exist only to fill the CSS grid and are skipped — the table's\nown cell lookup excludes them from the count as well. And a spanning cell advances the index\nby its `colspan`, because the columns it covers are consumed either way; numbering straight\nthrough would put every later cell one short per span."
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the row is selected.",
              "fieldName": "selected"
            },
            {
              "name": "multi-line",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allow cells in this row to wrap content across multiple lines instead of truncating.",
              "fieldName": "multiLine"
            },
            {
              "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 to the header row.",
              "name": "header"
            },
            {
              "description": "Applied when row selection is enabled.",
              "name": "selectable"
            },
            {
              "description": "Applied for the compact density.",
              "name": "compact"
            },
            {
              "description": "Applied for the spacious density.",
              "name": "spacious"
            },
            {
              "description": "Applied when the row is selected.",
              "name": "selected"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A table row that contains table cells.",
          "jsDoc": "/**\n * @summary A table row that contains table cells.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table\n * @status experimental\n * @since 1.0\n * @playwright getByRole('row')\n *\n * @cssproperty --ed-table-row-height - The height of this row, read by the cells inside it. Set it here to give one row\n *   a height, or on `ed-table` for all of them. Unset, each cell falls back to its density:\n *   `var(--ed-size-6)` compact, `var(--ed-size-8)` default, `var(--ed-size-12)` spacious.\n *\n * @cssstate header - Applied to the header row.\n * @cssstate selectable - Applied when row selection is enabled.\n * @cssstate compact - Applied for the compact density.\n * @cssstate spacious - Applied for the spacious density.\n * @cssstate selected - Applied when the row is selected.\n *\n * @dependency ed-table-cell\n *\n * @slot - The row's cells. Must be `<ed-table-cell>` elements.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByRole('row')",
          "dependencies": [
            "ed-table-cell"
          ],
          "tagName": "ed-table-row",
          "customElement": true,
          "modulePath": "components/table-row/table-row.js",
          "definitionPath": "components/table-row/table-row.js",
          "cssParts": [],
          "events": []
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTableRow",
            "module": "components/table-row/table-row.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-table-row",
          "declaration": {
            "name": "EdTableRow",
            "module": "components/table-row/table-row.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 color of the checked and indeterminate icons.",
              "name": "--ed-checkbox-checked-icon-color"
            },
            {
              "description": "The size of the checked and indeterminate icons.",
              "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 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"
              },
              "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
            },
            {
              "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": "The value of the checkbox, submitted as a name/value pair with form data while it is checked.\nDefaults to `'on'`, as on a native checkbox — never `null`.",
              "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"
              },
              "default": "null"
            },
            {
              "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": "handleValueOrCheckedChange",
              "type": {
                "text": "handleValueOrCheckedChange() => void"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "type": {
                "text": "formResetCallback() => void"
              }
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the checkbox.",
              "type": {
                "text": "click() => void"
              }
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the checkbox.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the checkbox.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "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, and passing the\nstate value along untouched — it is what the browser hands back on back-navigation, and it is\nnot this guard's business.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<EdFormAssociatedElement['setValue']>) => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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,
              "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'",
              "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "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"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The value of the checkbox, submitted as a name/value pair with form data while it is checked.\nDefaults to `'on'`, as on a native checkbox — never `null`.",
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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",
              "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 * @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 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 color of the checked and indeterminate icons.\n * @cssproperty --ed-checkbox-checked-icon-size - The size of the checked and indeterminate icons.\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('checkbox')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-checkbox",
          "customElement": true,
          "modulePath": "components/checkbox/checkbox.js",
          "definitionPath": "components/checkbox/checkbox.js"
        }
      ],
      "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/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"
                  }
                }
              ],
              "type": {
                "text": "isTreeItem(node: Node) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "getChildrenItems({ includeDisabled = true }: { includeDisabled?: boolean } = {}) => EdTreeItem[]"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "isExpandableItem(node: Node) => node is EdExpandableItem"
              }
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "type": {
                "text": "{ row: RowData, rowId: unknown }"
              },
              "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 * @since 1.0\n * @playwright getByRole('treeitem', { name: '…' })\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 {{ row: RowData, rowId: unknown }} 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",
          "since": "1.0",
          "playwright": "getByRole('treeitem', { name: '…' })",
          "dependencies": [
            "ed-checkbox",
            "ed-icon",
            "ed-progress-ring"
          ],
          "tagName": "ed-tree-item",
          "customElement": true,
          "modulePath": "components/tree-item/tree-item.js",
          "definitionPath": "components/tree-item/tree-item.js"
        }
      ],
      "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"
            }
          ],
          "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"
            }
          ],
          "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "A carousel item represent a slide within a carousel.",
          "jsDoc": "/**\n * @summary A carousel item represent a slide within a carousel.\n *\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/carousel-item\n * @since 1.0\n * @playwright getByRole('group')\n * @status experimental\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": "getByRole('group')",
          "status": "experimental",
          "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"
              }
            }
          ],
          "modulePath": "components/carousel-item/carousel-item.js",
          "definitionPath": "components/carousel-item/carousel-item.js",
          "cssParts": [],
          "cssStates": [],
          "events": []
        }
      ],
      "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": "events/sort.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSortEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdSortEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/sort.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdSortEvent",
          "declaration": {
            "name": "EdSortEvent",
            "module": "events/sort.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/step-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdStepChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdStepChangeEventDetail | undefined"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/step-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdStepChangeEvent",
          "declaration": {
            "name": "EdStepChangeEvent",
            "module": "events/step-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/unread-news-count-changed.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdUnreadNewsCountChangedEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdUnreadNewsCountChangedEventDetails | undefined"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "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-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/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": "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": "EdColumnReorderEvent",
          "declaration": {
            "name": "EdColumnReorderEvent",
            "module": "column-reorder.js"
          }
        },
        {
          "kind": "js",
          "name": "EdColumnResizeEvent",
          "declaration": {
            "name": "EdColumnResizeEvent",
            "module": "column-resize.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": "EdCreateEvent",
          "declaration": {
            "name": "EdCreateEvent",
            "module": "create.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": "EdLoadMoreEvent",
          "declaration": {
            "name": "EdLoadMoreEvent",
            "module": "load-more.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": "EdPaginationChangeEvent",
          "declaration": {
            "name": "EdPaginationChangeEvent",
            "module": "pagination-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": "EdRowCollapseEvent",
          "declaration": {
            "name": "EdRowCollapseEvent",
            "module": "row-collapse.js"
          }
        },
        {
          "kind": "js",
          "name": "EdRowDblclickEvent",
          "declaration": {
            "name": "EdRowDblclickEvent",
            "module": "row-dblclick.js"
          }
        },
        {
          "kind": "js",
          "name": "EdRowExpandEvent",
          "declaration": {
            "name": "EdRowExpandEvent",
            "module": "row-expand.js"
          }
        },
        {
          "kind": "js",
          "name": "EdRowReorderEvent",
          "declaration": {
            "name": "EdRowReorderEvent",
            "module": "row-reorder.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": "EdScrollEndEvent",
          "declaration": {
            "name": "EdScrollEndEvent",
            "module": "scroll-end.js"
          }
        },
        {
          "kind": "js",
          "name": "EdScrollStartEvent",
          "declaration": {
            "name": "EdScrollStartEvent",
            "module": "scroll-start.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": "EdSelectEvent",
          "declaration": {
            "name": "EdSelectEvent",
            "module": "select.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": "EdSortEvent",
          "declaration": {
            "name": "EdSortEvent",
            "module": "sort.js"
          }
        },
        {
          "kind": "js",
          "name": "EdStepChangeEvent",
          "declaration": {
            "name": "EdStepChangeEvent",
            "module": "step-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": "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": "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": "translations/ar.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'تم إنشاء هذا المحتوى بواسطة الذكاء الاصطناعي', back: 'رجوع', cancel: 'Cancel', carousel: 'كاروسيل', chooseDate: 'اختيار تاريخ', chooseDateAndTime: 'Choose a date and time', chooseTime: 'اختيار وقت', clearEntry: 'حذف الخيارات', close: 'اغلاق', collapse: 'طي', 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: 'Please fill in this field.', decrement: 'إنقاص', dragToReorder: 'اسحب لإعادة الترتيب', dropFileHere: 'أسقط الملف هنا أو انقر للتصفح', dropFilesHere: 'أسقط الملفات هنا أو انقر للتصفح', entriesPerPage: 'Entries per page', error: 'خطأ', expand: 'توسيع', finish: 'إنهاء', from: 'from', goToSlide: (slide, count) => `عرض شريحة رقم ${slide} من ${count}`, halfyear: 'نصف السنة', hidePassword: 'اخفاء كلمة المرور', increment: 'زيادة', loading: 'جاري التحميل', mainMenu: 'القائمة الرئيسية', maximumValue: label => (label ? `${label} (القيمة القصوى)` : 'القيمة القصوى'), minimumValue: label => (label ? `${label} (القيمة الدنيا)` : 'القيمة الدنيا'), month: 'الشهر', more: 'المزيد', multipleValues: 'قيم متعددة', newsMenu: 'قائمة الأخبار', newsToggleMenu: 'تبديل قائمة الأخبار', next: 'التالي', nextPage: 'Next page', nextSlide: 'الشريحة التالية', noData: 'لا توجد بيانات', noOptions: 'No options', 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 => { if (num === 0) return 'لا توجد إدخالات'; if (num === 1) return 'إدخال واحد'; if (num === 2) return 'إدخالان'; if (num > 2 && num < 11) return `${num} إدخالات`; return `${num} إدخالًا`; }, numEntriesLoaded: num => { if (num === 0) return 'لم يتم تحميل أي إدخالات'; if (num === 1) return 'تم تحميل إدخال واحد'; if (num === 2) return 'تم تحميل إدخالان'; if (num > 2 && num < 11) return `تم تحميل ${num} إدخالات`; return `تم تحميل ${num} إدخالًا`; }, 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 => { if (num === 0) return 'لم يتم تحديد شيء'; return `تم تحديد ${num}`; }, numTotal: num => `الإجمالي ${num}`, ok: 'OK', onThisPage: 'في هذه الصفحة', optionPosition: (label, position, total) => `${label}, ${position} من ${total}`, page: 'Page', pauseAnimation: 'إيقاف الرسوم المتحركة مؤقتًا', playAnimation: 'تشغيل الرسوم المتحركة', previousPage: 'Previous page', previousSlide: 'الشريحة السابقة', progress: 'مقدار التقدم', quarter: 'الربع', rangeSelected: (start, end) => `تم تحديد من ${start} إلى ${end}`, // Calendar range selection rangeSelectingFrom: date => `جارٍ تحديد نطاق بدءًا من ${date}…`, remove: 'حذف', reset: 'إعادة تعيين', resize: 'تغيير الحجم', scrollableRegion: 'منطقة قابلة للتمرير', scrollToEnd: 'الانتقال الى النهاية', scrollToStart: 'الانتقال الى البداية', search: 'بحث', sectionPages: 'صفحات القسم', sections: 'الأقسام', selectAColorFromTheScreen: 'اختر لون من الشاشة', numRowsSelected: num => { if (num === 0) return 'لم يتم تحديد أي صفوف'; if (num === 1) return 'تم تحديد صف واحد'; if (num === 2) return 'تم تحديد صفين'; if (num > 2 && num < 11) return `تم تحديد ${num} صفوف`; return `تم تحديد ${num} صفًا`; }, pageChanged: (page, total) => `الصفحة ${page} من ${total}`, reorderRow: 'إعادة ترتيب الصف', resizeColumn: 'تغيير عرض العمود', rowDropped: position => `تم إفلات الصف في الموضع ${position}`, rowLifted: (position, total) => `تم رفع الصف، الموضع ${position} من ${total}. استخدم السهمين لأعلى ولأسفل للنقل، ومفتاح المسافة للإفلات، وEscape للإلغاء.`, rowMoved: (position, total) => `الموضع ${position} من ${total}`, rowReorderCanceled: 'تم إلغاء إعادة الترتيب', selectAllRows: 'تحديد جميع الصفوف', selectDate: 'تحديد تاريخ', selectDateTime: 'Select date and time', selectRow: 'تحديد الصف', 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}`, timeInputBadInput: 'الرجاء إدخال وقت صالح.', timeInputRangeOverflow: 'الوقت متأخر جدًا.', timeInputRangeUnderflow: 'الوقت مبكر جدًا.', timeInputValueMissing: 'الرجاء ملء هذا الحقل.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'الساعة', timeSegmentMinute: 'الدقيقة', timeSegmentSecond: 'الثانية', toggleColorFormat: 'تغيير صيغة عرض اللون', until: 'إلى', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `الخطوة ${step} من ${total}`, wizardStepCompleted: step => `${step}، مكتملة`, year: 'السنة', zoomIn: 'تكبير', zoomOut: 'تصغير', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'تعذّر تحميل الصفحة', documentViewerLoadErrorHint: 'تحقّق من اتصالك بالإنترنت', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} ملف كحد أقصى`, $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í', back: 'Zpět', cancel: 'Cancel', carousel: 'Karusel', chooseDate: 'Vyberte datum', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Vyberte čas', clearEntry: 'Smazat položku', close: 'Zavřít', collapse: 'Sbalit', 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: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'TT', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Snížit', dragToReorder: 'Přetažením změňte pořadí', dropFileHere: 'Drop file here or click to browse', dropFilesHere: 'Drop files here or click to browse', entriesPerPage: 'Entries per page', error: 'Chyba', expand: 'Rozbalit', finish: 'Dokončit', from: 'from', goToSlide: (slide, count) => `Přejít na slide ${slide} z ${count}`, halfyear: 'Pololetí', hidePassword: 'Skrýt heslo', increment: 'Zvýšit', loading: 'Nahrává se', 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: 'Next page', nextSlide: 'Další slide', noData: 'Žádná data', noOptions: 'No options', 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 => { if (num === 0) return 'Žádné záznamy'; if (num === 1) return '1 záznam'; if (num >= 2 && num <= 4) return `${num} záznamy`; return `${num} záznamů`; }, numEntriesLoaded: num => { if (num === 0) return 'Žádné záznamy nebyly načteny'; if (num === 1) return 'Načten 1 záznam'; return `Načteno ${num} záznamů`; }, 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 => { if (num === 0) return 'Nic vybráno'; return `Vybráno: ${num}`; }, numTotal: num => `Celkem: ${num}`, ok: 'OK', onThisPage: 'Na této stránce', optionPosition: (label, position, total) => `${label}, ${position} z ${total}`, page: 'Page', pauseAnimation: 'Pozastavit animaci', playAnimation: 'Přehrát animaci', previousPage: 'Previous page', 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', resize: 'Změnit velikost', 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', 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ů`; }, pageChanged: (page, total) => `Strana ${page} z ${total}`, reorderRow: 'Přesunout řádek', resizeColumn: 'Změnit šířku sloupce', rowDropped: position => `Řádek umístěn na pozici ${position}`, 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', selectAllRows: 'Vybrat všechny řádky', selectDate: 'Vybrat datum', selectDateTime: 'Select date and time', selectRow: 'Vybrat řádek', 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}`, 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: 'Day period', timeSegmentHour: 'Hodina', timeSegmentMinute: 'Minuta', timeSegmentSecond: 'Sekunda', toggleColorFormat: 'Přepnout formát barvy', until: 'do', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Krok ${step} z ${total}`, wizardStepCompleted: step => `${step}, dokončeno`, year: 'Rok', zoomIn: 'Přiblížit', zoomOut: 'Oddálit', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Stránku nelze načíst', documentViewerLoadErrorHint: 'Zkontrolujte připojení k internetu', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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(ů)`, $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', back: 'Tilbage', cancel: 'Cancel', carousel: 'Karrusel', chooseDate: 'Vælg en dato', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Vælg et tidspunkt', clearEntry: 'Ryd indtastning', close: 'Luk', collapse: 'Skjul', 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: 'q', datePlaceholderWeek: 'uu', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Formindsk', dragToReorder: 'Træk for at omarrangere', dropFileHere: 'Drop file here or click to browse', dropFilesHere: 'Drop files here or click to browse', entriesPerPage: 'Entries per page', error: 'Fejl', expand: 'Vis', finish: 'Afslut', from: 'from', goToSlide: (slide, count) => `Gå til dias ${slide} af ${count}`, halfyear: 'Halvår', hidePassword: 'Skjul adgangskode', increment: 'Forøg', loading: 'Indlæser', 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: 'Next page', nextSlide: 'Næste slide', noData: 'Ingen data', noOptions: 'No options', 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) => { if (num === 0) return 'Ingen poster'; if (num === 1) return '1 post'; return `${num} poster`; }, numEntriesLoaded: (num: number) => { if (num === 0) return 'Ingen poster indlæst'; if (num === 1) return '1 post indlæst'; return `${num} poster indlæst`; }, 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) => { if (num === 0) return 'Ingen valgt'; return `${num} valgt`; }, numTotal: (num: number) => `${num} i alt`, ok: 'OK', onThisPage: 'På denne side', optionPosition: (label, position, total) => `${label}, ${position} af ${total}`, page: 'Page', pauseAnimation: 'Pause animation', playAnimation: 'Afspil animation', previousPage: 'Previous page', 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', resize: 'Tilpas størrelse', 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', numRowsSelected: num => { if (num === 0) return 'Ingen rækker valgt'; if (num === 1) return '1 række valgt'; return `${num} rækker valgt`; }, pageChanged: (page, total) => `Side ${page} af ${total}`, reorderRow: 'Flyt række', resizeColumn: 'Tilpas kolonnebredde', rowDropped: position => `Række placeret på position ${position}`, 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', selectAllRows: 'Vælg alle rækker', selectDate: 'Vælg dato', selectDateTime: 'Select date and time', selectRow: 'Vælg række', 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}`, 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: 'Day period', timeSegmentHour: 'Time', timeSegmentMinute: 'Minut', timeSegmentSecond: 'Sekund', toggleColorFormat: 'Skift farveformat', until: 'til', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Trin ${step} af ${total}`, wizardStepCompleted: step => `${step}, gennemført`, year: 'År', zoomIn: 'Zoom ind', zoomOut: 'Zoom ud', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Siden kunne ikke indlæses', documentViewerLoadErrorHint: 'Tjek din internetforbindelse', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', 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)`, $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', 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', close: 'Schließen', collapse: 'Einklappen', 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', 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', finish: 'Fertig', from: 'von', goToSlide: (slide, count) => `Zu Folie ${slide} von ${count} gehen`, halfyear: 'Halbjahr', hidePassword: 'Passwort verbergen', increment: 'Erhöhen', loading: 'Wird geladen', 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', noOptions: 'Keine Optionen', 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 => { if (num === 0) return 'Keine Einträge'; if (num === 1) return '1 Eintrag'; return `${num} Einträge`; }, numEntriesLoaded: num => { if (num === 0) return 'Keine Einträge geladen'; if (num === 1) return '1 Eintrag geladen'; return `${num} Einträge geladen`; }, 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 => { if (num === 0) return 'Keine ausgewählt'; return `${num} ausgewählt`; }, numTotal: num => `${num} insgesamt`, ok: 'OK', onThisPage: 'Auf dieser Seite', optionPosition: (label, position, total) => `${label}, ${position} von ${total}`, page: 'Seite', pauseAnimation: 'Animation pausieren', 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', resize: 'Größe ä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', numRowsSelected: num => { if (num === 0) return 'Keine Zeilen ausgewählt'; if (num === 1) return '1 Zeile ausgewählt'; return `${num} Zeilen ausgewählt`; }, pageChanged: (page, total) => `Seite ${page} von ${total}`, reorderRow: 'Zeile verschieben', resizeColumn: 'Spaltenbreite ändern', rowDropped: position => `Zeile an Position ${position} abgelegt`, 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', selectAllRows: 'Alle Zeilen auswählen', selectDate: 'Datum auswählen', selectDateTime: 'Datum und Uhrzeit auswählen', selectRow: 'Zeile auswählen', 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}`, 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', until: 'bis', 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}`, wizardStep: (step, total) => `Schritt ${step} von ${total}`, wizardStepCompleted: step => `${step}, abgeschlossen`, 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', documentViewerLoadErrorHint: 'Überprüfen Sie Ihre Internetverbindung', 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`, $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', $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', $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', back: 'Atrás', cancel: 'Cancel', carousel: 'Carrusel', chooseDate: 'Elegir una fecha', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Elegir una hora', clearEntry: 'Borrar entrada', close: 'Cerrar', collapse: 'Contraer', 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: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'ss', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Disminuir', dragToReorder: 'Arrastrar para reordenar', dropFileHere: 'Arrastra el archivo aquí o haz clic para buscarlo.', dropFilesHere: 'Arrastra los archivos aquí o haz clic para buscarlos.', entriesPerPage: 'Entries per page', error: 'Error', expand: 'Expandir', finish: 'Finalizar', from: 'from', goToSlide: (slide, count) => `Ir a la diapositiva ${slide} de ${count}`, halfyear: 'Semestre', hidePassword: 'Ocultar contraseña', increment: 'Aumentar', loading: 'Cargando', 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: 'Next page', nextSlide: 'Siguiente diapositiva', noData: 'Sin datos', noOptions: 'No options', 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 => { if (num === 0) return 'Sin entradas'; if (num === 1) return '1 entrada'; return `${num} entradas`; }, numEntriesLoaded: num => { if (num === 0) return 'No se cargaron entradas'; if (num === 1) return '1 entrada cargada'; return `${num} entradas cargadas`; }, 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} opción seleccionada`; }, numSelected: num => { if (num === 0) return 'Ninguna seleccionada'; if (num === 1) return '1 seleccionada'; return `${num} seleccionadas`; }, numTotal: num => `${num} en total`, ok: 'OK', onThisPage: 'En esta página', optionPosition: (label, position, total) => `${label}, ${position} de ${total}`, page: 'Page', pauseAnimation: 'Pausar animación', playAnimation: 'Reproducir animación', previousPage: 'Previous page', 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', resize: 'Cambiar el tamaño', 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', numRowsSelected: num => { if (num === 0) return 'Ninguna fila seleccionada'; if (num === 1) return '1 fila seleccionada'; return `${num} filas seleccionadas`; }, pageChanged: (page, total) => `Página ${page} de ${total}`, reorderRow: 'Reordenar fila', resizeColumn: 'Cambiar el ancho de la columna', rowDropped: position => `Fila soltada en la posición ${position}`, rowLifted: (position, total) => `Fila levantada, posición ${position} de ${total}. Usa 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', selectAllRows: 'Seleccionar todas las filas', selectDate: 'Seleccionar fecha', selectDateTime: 'Select date and time', selectRow: 'Seleccionar fila', 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}`, 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: 'Day period', timeSegmentHour: 'Hora', timeSegmentMinute: 'Minuto', timeSegmentSecond: 'Segundo', toggleColorFormat: 'Alternar formato de color', until: 'hasta', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Paso ${step} de ${total}`, wizardStepCompleted: step => `${step}, completado`, year: 'Año', zoomIn: 'Acercar', zoomOut: 'Alejar', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'No se pudo cargar la página', documentViewerLoadErrorHint: 'Compruebe su conexión a Internet', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', 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 cancelas, 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. Reinicia el proceso.', scanSaveErrorBack: 'Volver a la edición', scanSaveErrorMessage: 'Ocurrió un error al guardar. Puedes 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: 'Puedes arrastrar y soltar un archivo aquí o seleccionarlo con el botón.', uploadDragAndDropTitle: 'Subir archivo', uploadDropFile: 'Suelta el archivo', uploadDropFiles: 'Suelta 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 => `Puedes subir como máximo ${max} archivo(s)`, $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: 'این محتوا توسط هوش مصنوعی تولید شده است', back: 'بازشت', cancel: 'Cancel', carousel: 'چرخ‌فلک', chooseDate: 'انتخاب تاریخ', chooseDateAndTime: 'Choose a date and time', chooseTime: 'انتخاب زمان', clearEntry: 'پاک کردن ورودی', close: 'بستن', collapse: 'جمع کردن', 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: 'Please fill in this field.', decrement: 'کاهش', dragToReorder: 'برای مرتب‌سازی مجدد بکشید', dropFileHere: 'فایل را اینجا رها کنید یا برای انتخاب کلیک کنید', dropFilesHere: 'فایل‌ها را اینجا رها کنید یا برای انتخاب کلیک کنید', entriesPerPage: 'Entries per page', error: 'خطا', expand: 'گسترش دادن', finish: 'ایان', from: 'from', goToSlide: (slide, count) => `رفتن به اسلاید ${slide} از ${count}`, halfyear: 'نیم‌سال', hidePassword: 'پنهان کردن رمز', increment: 'افزایش', loading: 'بارگذاری', mainMenu: 'منوی اصلی', maximumValue: label => (label ? `${label} (حداکثر مقدار)` : 'حداکثر مقدار'), minimumValue: label => (label ? `${label} (حداقل مقدار)` : 'حداقل مقدار'), month: 'ماه', more: 'بیشتر', multipleValues: 'چندین مقدار', newsMenu: 'منوی اخبار', newsToggleMenu: 'تغییر منوی اخبار', next: 'بعدی', nextPage: 'Next page', nextSlide: 'اسلاید بعدی', noData: 'بدون داده', noOptions: 'No options', notificationsRegion: hotkey => `اعلان‌ها، برای تمرکز ${hotkey} را فشار دهید`, numCharacters: num => { if (num === 1) return '1 نویسه'; return `${num} نویسه`; }, numCharactersRemaining: num => { if (num === 1) return '1 نویسه باقیمانده'; return `${num} نویسه باقیمانده`; }, numEntries: num => { if (num === 0) return 'بدون ورودی'; return `${num} ورودی`; }, numEntriesLoaded: num => { if (num === 0) return 'هیچ ورودی‌ای بارگیری نشد'; if (num === 1) return '1 ورودی بارگیری شد'; return `${num} ورودی بارگیری شد`; }, 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 => { if (num === 0) return 'هیچ‌کدام انتخاب نشده'; return `${num} انتخاب شده`; }, numTotal: num => `${num} در کل`, ok: 'OK', onThisPage: 'در این صفحه', optionPosition: (label, position, total) => `${label}، ${position} از ${total}`, page: 'Page', pauseAnimation: 'مکث انیمیشن', playAnimation: 'پخش انیمیشن', previousPage: 'Previous page', previousSlide: 'اسلاید قبلی', progress: 'پیشرفت', quarter: 'سه‌ماهه', rangeSelected: (start, end) => `از ${start} تا ${end} انتخاب شد`, // Calendar range selection rangeSelectingFrom: date => `در حال انتخاب بازه از ${date}…`, remove: 'حذف', reset: 'بازنشانی', resize: 'تغییر اندازه', scrollableRegion: 'ناحیه قابل اسکرول', scrollToEnd: 'پیمایش به انتها', scrollToStart: 'پیمایش به ابتدا', search: 'جستجو', sectionPages: 'صفحات بخش', sections: 'بخش‌ها', selectAColorFromTheScreen: 'انتخاب یک رنگ از صفحه نمایش', numRowsSelected: num => { if (num === 0) return 'هیچ ردیفی انتخاب نشده است'; return `${num} ردیف انتخاب شد`; }, pageChanged: (page, total) => `صفحه ${page} از ${total}`, reorderRow: 'جابه\\u200cجایی ردیف', resizeColumn: 'تغییر عرض ستون', rowDropped: position => `ردیف در موقعیت ${position} رها شد`, rowLifted: (position, total) => `ردیف برداشته شد، موقعیت ${position} از ${total}. با کلیدهای جهت بالا و پایین جابه\\u200cجا کنید، با کلید فاصله رها کنید و با Escape لغو کنید.`, rowMoved: (position, total) => `موقعیت ${position} از ${total}`, rowReorderCanceled: 'جابه\\u200cجایی لغو شد', selectAllRows: 'انتخاب همه ردیف‌ها', selectDate: 'انتخاب تاریخ', selectDateTime: 'Select date and time', selectRow: 'انتخاب ردیف', 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}`, timeInputBadInput: 'لطفاً یک زمان معتبر وارد کنید.', timeInputRangeOverflow: 'زمان خیلی دیر است.', timeInputRangeUnderflow: 'زمان خیلی زود است.', timeInputValueMissing: 'لطفاً این فیلد را پر کنید.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'ساعت', timeSegmentMinute: 'دقیقه', timeSegmentSecond: 'ثانیه', toggleColorFormat: 'تغییر قالب رنگ', until: 'تا', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `مرحله ${step} از ${total}`, wizardStepCompleted: step => `${step}، تکمیل‌شده`, year: 'سال', zoomIn: 'بزرگ‌نمایی', zoomOut: 'کوچک‌نمایی', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'صفحه بارگذاری نشد', documentViewerLoadErrorHint: 'اتصال اینترنت خود را بررسی کنید', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} فایل بارگذاری کنید`, $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', back: 'Takaisin', cancel: 'Cancel', carousel: 'Karuselli', chooseDate: 'Valitse päivämäärä', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Valitse kellonaika', clearEntry: 'Poista merkintä', close: 'Sulje', collapse: 'Supista', 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: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'vv', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Vähennä', 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: 'Entries per page', error: 'Virhe', expand: 'Laajenna', finish: 'Valmis', from: 'from', goToSlide: (slide, count) => `Siirry diaan ${slide} / ${count}`, halfyear: 'Vuosipuolisko', hidePassword: 'Piilota salasana', increment: 'Lisää', loading: 'Ladataan', 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: 'Next page', nextSlide: 'Seuraava dia', noData: 'Ei tietoja', noOptions: 'No options', 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 => { if (num === 0) return 'Ei merkintöjä'; if (num === 1) return '1 merkintä'; return `${num} merkintää`; }, numEntriesLoaded: num => { if (num === 0) return 'Ei merkintöjä ladattu'; if (num === 1) return '1 merkintä ladattu'; return `${num} merkintää ladattu`; }, 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 => { if (num === 0) return 'Ei valintoja'; return `${num} valittu`; }, numTotal: num => `${num} yhteensä`, ok: 'OK', onThisPage: 'Tällä sivulla', optionPosition: (label, position, total) => `${label}, ${position}/${total}`, page: 'Page', pauseAnimation: 'Keskeytä animaatio', playAnimation: 'Toista animaatio', previousPage: 'Previous page', 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', resize: 'Muuta kokoa', scrollableRegion: 'Vieritettävä alue', scrollToEnd: 'Vieritä loppuun', scrollToStart: 'Vieritä alkuun', search: 'Hae', sectionPages: 'Osion sivut', sections: 'Osiot', selectAColorFromTheScreen: 'Valitse väri näytöltä', numRowsSelected: num => { if (num === 0) return 'Ei valittuja rivejä'; if (num === 1) return '1 rivi valittu'; return `${num} riviä valittu`; }, pageChanged: (page, total) => `Sivu ${page} / ${total}`, reorderRow: 'Siirrä riviä', resizeColumn: 'Muuta sarakkeen leveyttä', rowDropped: position => `Rivi pudotettu kohtaan ${position}`, 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', selectAllRows: 'Valitse kaikki rivit', selectDate: 'Valitse päivämäärä', selectDateTime: 'Select date and time', selectRow: 'Valitse rivi', 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}`, timeInputBadInput: 'Anna kelvollinen kellonaika.', timeInputRangeOverflow: 'Kellonaika on liian myöhäinen.', timeInputRangeUnderflow: 'Kellonaika on liian aikainen.', timeInputValueMissing: 'Täytä tämä kenttä.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Tunti', timeSegmentMinute: 'Minuutti', timeSegmentSecond: 'Sekunti', toggleColorFormat: 'Vaihda väriformaattia', until: 'asti', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Vaihe ${step}/${total}`, wizardStepCompleted: step => `${step}, valmis`, year: 'Vuosi', zoomIn: 'Lähennä', zoomOut: 'Loitonna', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Sivua ei voitu ladata', documentViewerLoadErrorHint: 'Tarkista internetyhteytesi', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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`, $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\", back: 'Retour', cancel: 'Cancel', carousel: 'Carrousel', chooseDate: 'Choisir une date', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Choisir une heure', clearEntry: `Effacer l'entrée`, close: 'Fermer', collapse: 'Réduire', 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: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'ss', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Diminuer', 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: 'Entries per page', error: 'Erreur', expand: 'Développer', finish: 'Terminer', from: 'from', goToSlide: (slide, count) => `Aller à la diapositive ${slide} de ${count}`, halfyear: 'Semestre', hidePassword: 'Masquer le mot de passe', increment: 'Augmenter', loading: 'Chargement', 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: 'Next page', nextSlide: 'Diapositive suivante', noData: 'Aucune donnée', noOptions: 'No options', 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 => { if (num === 0) return 'Aucune entrée'; if (num === 1) return '1 entrée'; return `${num} entrées`; }, numEntriesLoaded: num => { if (num === 0) return 'Aucune entrée chargée'; if (num === 1) return '1 entrée chargée'; return `${num} entrées chargé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 => { if (num === 0) return 'Aucune sélection'; if (num === 1) return '1 sélectionnée'; return `${num} sélectionnées`; }, numTotal: num => `${num} au total`, ok: 'OK', onThisPage: 'Sur cette page', optionPosition: (label, position, total) => `${label}, ${position} sur ${total}`, page: 'Page', pauseAnimation: \"Suspendre l'animation\", playAnimation: \"Lire l'animation\", previousPage: 'Previous page', 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', resize: 'Redimensionner', 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`, 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`; }, pageChanged: (page, total) => `Page ${page} sur ${total}`, reorderRow: 'Réorganiser la ligne', resizeColumn: 'Redimensionner la colonne', rowDropped: position => `Ligne déposée à la position ${position}`, 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', selectAllRows: 'Sélectionner toutes les lignes', selectDate: 'Sélectionner une date', selectDateTime: 'Select date and time', selectRow: 'Sélectionner la ligne', 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}`, 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: 'Day period', timeSegmentHour: 'Heure', timeSegmentMinute: 'Minute', timeSegmentSecond: 'Seconde', toggleColorFormat: 'Changer le format de couleur', until: \"jusqu'à\", weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Étape ${step} sur ${total}`, wizardStepCompleted: step => `${step}, terminé`, year: 'Année', zoomIn: 'Zoomer', zoomOut: 'Dézoomer', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Impossible de charger la page', documentViewerLoadErrorHint: 'Vérifiez votre connexion Internet', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single 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)`, $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: 'תוכן זה נוצר על ידי בינה מלאכותית', back: 'חזרה', cancel: 'Cancel', carousel: 'קרוסלה', chooseDate: 'בחירת תאריך', chooseDateAndTime: 'Choose a date and time', chooseTime: 'בחירת שעה', clearEntry: 'נקה קלט', close: 'סגור', collapse: 'כווץ', 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: 'Please fill in this field.', decrement: 'הקטן', dragToReorder: 'גרור לסידור מחדש', dropFileHere: 'גרור ושחרר קובץ כאן או לחץ לבחירה', dropFilesHere: 'גרור ושחרר קבצים כאן או לחץ לבחירה', entriesPerPage: 'Entries per page', error: 'שְׁגִיאָה', expand: 'הרחב', finish: 'סיום', from: 'from', goToSlide: (slide, count) => `עבור לשקופית ${slide} של ${count}`, halfyear: 'מחצית שנה', hidePassword: 'הסתר סיסמא', increment: 'הגדל', loading: 'טוען', mainMenu: 'התפריט הראשי', maximumValue: label => (label ? `${label} (ערך מרבי)` : 'ערך מרבי'), minimumValue: label => (label ? `${label} (ערך מזערי)` : 'ערך מזערי'), month: 'חודש', more: 'עוד', multipleValues: 'ערכים מרובים', newsMenu: 'תפריט חדשות', newsToggleMenu: 'החלף תפריט חדשות', next: 'הבא', nextPage: 'Next page', nextSlide: 'השקף הבא', noData: 'אין נתונים', noOptions: 'No options', notificationsRegion: hotkey => `התראות, לחץ ${hotkey} למיקוד`, numCharacters: num => { if (num === 1) return '1 תו'; return `${num} תווים`; }, numCharactersRemaining: num => { if (num === 1) return '1 תו נותר'; return `${num} תווים נותרים`; }, numEntries: num => { if (num === 0) return 'אין רשומות'; if (num === 1) return 'רשומה אחת'; return `${num} רשומות`; }, numEntriesLoaded: num => { if (num === 0) return 'לא נטענו רשומות'; if (num === 1) return 'נטענה רשומה אחת'; return `נטענו ${num} רשומות`; }, 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 => { if (num === 0) return 'לא נבחר'; return `נבחרו ${num}`; }, numTotal: num => `${num} בסך הכל`, ok: 'OK', onThisPage: 'בעמוד זה', optionPosition: (label, position, total) => `${label}, ${position} מתוך ${total}`, page: 'Page', pauseAnimation: 'השהה אנימציה', playAnimation: 'נגן אנימציה', previousPage: 'Previous page', previousSlide: 'שקופית קודמת', progress: 'התקדמות', quarter: 'רבעון', rangeSelected: (start, end) => `נבחר מ-${start} עד ${end}`, // Calendar range selection rangeSelectingFrom: date => `בחירת טווח החל מ-${date}…`, remove: 'לְהַסִיר', reset: 'איפוס', resize: 'שנה גודל', scrollableRegion: 'אזור גלילה', scrollToEnd: 'גלול עד הסוף', scrollToStart: 'גלול להתחלה', search: 'חיפוש', sectionPages: 'דפי הקטע', sections: 'קטעים', selectAColorFromTheScreen: 'בחור צבע מהמסך', numRowsSelected: num => { if (num === 0) return 'לא נבחרו שורות'; if (num === 1) return 'שורה אחת נבחרה'; return `${num} שורות נבחרו`; }, pageChanged: (page, total) => `עמוד ${page} מתוך ${total}`, reorderRow: 'סידור שורה מחדש', resizeColumn: 'שינוי רוחב העמודה', rowDropped: position => `השורה הונחה במיקום ${position}`, rowLifted: (position, total) => `השורה הורמה, מיקום ${position} מתוך ${total}. השתמשו בחיצים למעלה ולמטה כדי להזיז, רווח כדי להניח ו-Escape כדי לבטל.`, rowMoved: (position, total) => `מיקום ${position} מתוך ${total}`, rowReorderCanceled: 'הסידור מחדש בוטל', selectAllRows: 'בחר את כל השורות', selectDate: 'בחירת תאריך', selectDateTime: 'Select date and time', selectRow: 'בחר שורה', 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}`, timeInputBadInput: 'יש להזין שעה תקינה.', timeInputRangeOverflow: 'השעה מאוחרת מדי.', timeInputRangeUnderflow: 'השעה מוקדמת מדי.', timeInputValueMissing: 'יש למלא שדה זה.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'שעה', timeSegmentMinute: 'דקה', timeSegmentSecond: 'שנייה', toggleColorFormat: 'החלף פורמט צבע', until: 'עד', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `שלב ${step} מתוך ${total}`, wizardStepCompleted: step => `${step}, הושלם`, year: 'שנה', zoomIn: 'התקרב', zoomOut: 'התרחק', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'לא ניתן היה לטעון את העמוד', documentViewerLoadErrorHint: 'בדקו את חיבור האינטרנט שלכם', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} קבצים לכל היותר`, $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 द्वारा उत्पन्न की गई थी', back: 'वापस', cancel: 'Cancel', carousel: 'कैरोसेल', chooseDate: 'एक तारीख़ चुनें', chooseDateAndTime: 'Choose a date and time', chooseTime: 'एक समय चुनें', clearEntry: 'प्रविष्टि साफ़ करें', close: 'बंद करें', collapse: 'संकुचित करें', 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: 'Please fill in this field.', decrement: 'घटाएं', dragToReorder: 'पुनः क्रमबद्ध करने के लिए खींचें', dropFileHere: 'फ़ाइल यहाँ छोड़ें या ब्राउज़ करने के लिए क्लिक करें', dropFilesHere: 'फ़ाइलें यहाँ छोड़ें या ब्राउज़ करने के लिए क्लिक करें', entriesPerPage: 'Entries per page', error: 'त्रुटि', expand: 'विस्तृत करें', finish: 'समाप्त', from: 'from', goToSlide: (slide, count) => `${count} में से स्लाइड ${slide} पर जाएं`, halfyear: 'छमाही', hidePassword: 'पासवर्ड छुपाएं', increment: 'बढ़ाएं', loading: 'लोड हो रहा है', mainMenu: 'मुख्य मेनू', maximumValue: label => (label ? `${label} (अधिकतम मान)` : 'अधिकतम मान'), minimumValue: label => (label ? `${label} (न्यूनतम मान)` : 'न्यूनतम मान'), month: 'माह', more: 'अधिक', multipleValues: 'कई मान', newsMenu: 'समाचार मेनू', newsToggleMenu: 'समाचार मेनू बदलें', next: 'आगे', nextPage: 'Next page', nextSlide: 'अगली स्लाइड', noData: 'कोई डेटा नहीं', noOptions: 'No options', notificationsRegion: hotkey => `सूचनाएं, फ़ोकस करने के लिए ${hotkey} दबाएं`, numCharacters: num => { if (num === 1) return '1 अक्षर'; return `${num} अक्षर`; }, numCharactersRemaining: num => { if (num === 1) return '1 अक्षर शेष'; return `${num} अक्षर शेष`; }, numEntries: num => { if (num === 0) return 'कोई प्रविष्टि नहीं'; if (num === 1) return '1 प्रविष्टि'; return `${num} प्रविष्टियाँ`; }, numEntriesLoaded: num => { if (num === 0) return 'कोई प्रविष्टियाँ लोड नहीं हुईं'; if (num === 1) return '1 प्रविष्टि लोड हुई'; return `${num} प्रविष्टियाँ लोड हुईं`; }, 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 => { if (num === 0) return 'कोई चयन नहीं'; return `${num} चयनित`; }, numTotal: num => `कुल ${num}`, ok: 'OK', onThisPage: 'इस पृष्ठ पर', optionPosition: (label, position, total) => `${label}, ${position} / ${total}`, page: 'Page', pauseAnimation: 'एनिमेशन रोकें', playAnimation: 'एनिमेशन चलाएं', previousPage: 'Previous page', previousSlide: 'पिछली स्लाइड', progress: 'प्रगति', quarter: 'तिमाही', rangeSelected: (start, end) => `${start} से ${end} तक चयनित`, // Calendar range selection rangeSelectingFrom: date => `${date} से श्रेणी का चयन किया जा रहा है…`, remove: 'हटाएं', reset: 'रीसेट', resize: 'आकार बदलें', scrollableRegion: 'स्क्रॉल करने योग्य क्षेत्र', scrollToEnd: 'अंत तक स्क्रॉल करें', scrollToStart: 'आरंभ तक स्क्रॉल करें', search: 'खोजें', sectionPages: 'अनुभाग के पृष्ठ', sections: 'अनुभाग', selectAColorFromTheScreen: 'स्क्रीन से एक रंग चुनें', numRowsSelected: num => { if (num === 0) return 'कोई पंक्ति चयनित नहीं'; if (num === 1) return '1 पंक्ति चयनित'; return `${num} पंक्तियाँ चयनित`; }, pageChanged: (page, total) => `पृष्ठ ${page} / ${total}`, reorderRow: 'पंक्ति का क्रम बदलें', resizeColumn: 'कॉलम की चौड़ाई बदलें', rowDropped: position => `पंक्ति स्थिति ${position} पर रखी गई`, rowLifted: (position, total) => `पंक्ति उठाई गई, स्थिति ${position} / ${total}. ऊपर-नीचे तीर कुंजियों से हिलाएँ, स्पेस से रखें, Escape से रद्द करें.`, rowMoved: (position, total) => `स्थिति ${position} / ${total}`, rowReorderCanceled: 'क्रम बदलना रद्द किया गया', selectAllRows: 'सभी पंक्तियाँ चुनें', selectDate: 'तारीख़ चुनें', selectDateTime: 'Select date and time', selectRow: 'पंक्ति चुनें', 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}`, timeInputBadInput: 'कृपया एक मान्य समय दर्ज करें.', timeInputRangeOverflow: 'समय बहुत बाद का है.', timeInputRangeUnderflow: 'समय बहुत पहले का है.', timeInputValueMissing: 'कृपया यह फ़ील्ड भरें.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'घंटा', timeSegmentMinute: 'मिनट', timeSegmentSecond: 'सेकंड', toggleColorFormat: 'रंग प्रारूप बदलें', until: 'तक', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `चरण ${step} / ${total}`, wizardStepCompleted: step => `${step}, पूर्ण`, year: 'वर्ष', zoomIn: 'ज़ूम इन', zoomOut: 'ज़ूम आउट', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'पृष्ठ लोड नहीं किया जा सका', documentViewerLoadErrorHint: 'अपना इंटरनेट कनेक्शन जांचें', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} फ़ाइल(ें) अपलोड कर सकते हैं`, $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', back: 'Nazad', cancel: 'Cancel', carousel: 'Vrtuljak', chooseDate: 'Odaberite datum', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Odaberite vrijeme', clearEntry: 'Očisti unos', close: 'Zatvori', collapse: 'Sažmi', 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: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'TT', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Smanji', dragToReorder: 'Povuci za promjenu redosljeda', dropFileHere: 'Dovucite datoteku ovdje ili kliknite za pregled', dropFilesHere: 'Dovucite datoteke ovdje ili kliknite za pregled', entriesPerPage: 'Entries per page', error: 'Greška', expand: 'Proširi', finish: 'Završi', from: 'from', goToSlide: (slide, count) => `Idi na slajd ${slide} od ${count}`, halfyear: 'Polugodište', hidePassword: 'Sakrij lozinku', increment: 'Povećaj', loading: 'Učitavanje', 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: 'Next page', nextSlide: 'Sljedeći slajd', noData: 'Nema podataka', noOptions: 'No options', 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 => { if (num === 0) return 'Nema unosa'; if (num === 1) return '1 unos'; return `${num} unosa`; }, numEntriesLoaded: num => { if (num === 0) return 'Nije učitan nijedan unos'; if (num === 1) return 'Učitan 1 unos'; return `Učitano ${num} unosa`; }, 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 => { if (num === 0) return 'Nije odabrano'; return `${num} odabrano`; }, numTotal: num => `Ukupno ${num}`, ok: 'OK', onThisPage: 'Na ovoj stranici', optionPosition: (label, position, total) => `${label}, ${position} od ${total}`, page: 'Page', pauseAnimation: 'Pauziraj animaciju', playAnimation: 'Reproduciraj animaciju', previousPage: 'Previous page', 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', resize: 'Promijeni veličinu', 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', 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`; }, pageChanged: (page, total) => `Stranica ${page} od ${total}`, reorderRow: 'Premjesti redak', resizeColumn: 'Promijeni širinu stupca', rowDropped: position => `Redak spušten na poziciju ${position}`, 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', selectAllRows: 'Odaberi sve retke', selectDate: 'Odaberi datum', selectDateTime: 'Select date and time', selectRow: 'Odaberi redak', 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}`, 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: 'Day period', timeSegmentHour: 'Sat', timeSegmentMinute: 'Minuta', timeSegmentSecond: 'Sekunda', toggleColorFormat: 'Zamijeni format boje', until: 'do', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Korak ${step} od ${total}`, wizardStepCompleted: step => `${step}, završeno`, year: 'Godina', zoomIn: 'Povećaj', zoomOut: 'Smanji', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Stranicu nije moguće učitati', documentViewerLoadErrorHint: 'Provjerite internetsku vezu', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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`, $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', back: 'Vissza', cancel: 'Cancel', carousel: 'Körhinta', chooseDate: 'Válasszon dátumot', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Válasszon időpontot', clearEntry: 'Bejegyzés törlése', close: 'Bezárás', collapse: 'Összecsukás', 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: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'HH', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Csökkentés', 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: 'Entries per page', error: 'Hiba', expand: 'Kibontás', finish: 'Befejezés', from: 'from', goToSlide: (slide, count) => `Ugrás a ${count}/${slide}. diára`, halfyear: 'Félév', hidePassword: 'Jelszó elrejtése', increment: 'Növelés', loading: 'Betöltés', 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: 'Next page', nextSlide: 'Következő dia', noData: 'Nincs adat', noOptions: 'No options', 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 => { if (num === 0) return 'Nincsenek bejegyzések'; if (num === 1) return '1 bejegyzés'; return `${num} bejegyzés`; }, numEntriesLoaded: num => { if (num === 0) return 'Nincsenek bejegyzések betöltve'; if (num === 1) return '1 bejegyzés betöltve'; return `${num} bejegyzés betöltve`; }, 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 => { if (num === 0) return 'Nincs kijelölés'; return `${num} kijelölve`; }, numTotal: num => `Összesen ${num}`, ok: 'OK', onThisPage: 'Ezen az oldalon', optionPosition: (label, position, total) => `${label}, ${position} / ${total}`, page: 'Page', pauseAnimation: 'Animáció szüneteltetése', playAnimation: 'Animáció lejátszása', previousPage: 'Previous page', 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', resize: 'Átméretezés', 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', numRowsSelected: num => { if (num === 0) return 'Nincs kijelölt sor'; if (num === 1) return '1 sor kijelölve'; return `${num} sor kijelölve`; }, pageChanged: (page, total) => `${page}. oldal, összesen ${total}`, reorderRow: 'Sor áthelyezése', resizeColumn: 'Oszlopszélesség módosítása', rowDropped: position => `Sor letéve a(z) ${position}. pozícióra`, 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', selectAllRows: 'Az összes sor kiválasztása', selectDate: 'Dátum kiválasztása', selectDateTime: 'Select date and time', selectRow: 'Sor kiválasztása', 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`, 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: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Óra', timeSegmentMinute: 'Perc', timeSegmentSecond: 'Másodperc', toggleColorFormat: 'Színformátum változtatása', until: 'eddig', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `${step}. lépés / ${total}`, wizardStepCompleted: step => `${step}, befejezve`, year: 'Év', zoomIn: 'Nagyítás', zoomOut: 'Kicsinyítés', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Az oldal nem tölthető be', documentViewerLoadErrorHint: 'Ellenőrizze az internetkapcsolatát', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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`, $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', back: 'Kembali', cancel: 'Cancel', carousel: 'Karousel', chooseDate: 'Pilih tanggal', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Pilih waktu', clearEntry: 'Hapus entri', close: 'Tutup', collapse: 'Ciutkan', 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: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'mm', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Kurangi', dragToReorder: 'Seret untuk mengurutkan ulang', dropFileHere: 'Lepas file di sini atau klik untuk menelusuri', dropFilesHere: 'Lepas file di sini atau klik untuk menelusuri', entriesPerPage: 'Entries per page', error: 'Kesalahan', expand: 'Perluas', finish: 'Selesai', from: 'from', goToSlide: (slide, count) => `Pergi ke slide ${slide} dari ${count}`, halfyear: 'Semester', hidePassword: 'Sembunyikan sandi', increment: 'Tambah', loading: 'Memuat', 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: 'Next page', nextSlide: 'Slide berikutnya', noData: 'Tidak ada data', noOptions: 'No options', 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 => { if (num === 0) return 'Tidak ada entri'; return `${num} entri`; }, numEntriesLoaded: num => { if (num === 0) return 'Tidak ada entri yang dimuat'; if (num === 1) return '1 entri dimuat'; return `${num} entri dimuat`; }, 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 => { if (num === 0) return 'Tidak ada yang dipilih'; return `${num} dipilih`; }, numTotal: num => `Total ${num}`, ok: 'OK', onThisPage: 'Di halaman ini', optionPosition: (label, position, total) => `${label}, ${position} dari ${total}`, page: 'Page', pauseAnimation: 'Jeda animasi', playAnimation: 'Putar animasi', previousPage: 'Previous page', 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', resize: 'Ubah ukuran', 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', numRowsSelected: num => { if (num === 0) return 'Tidak ada baris yang dipilih'; return `${num} baris dipilih`; }, pageChanged: (page, total) => `Halaman ${page} dari ${total}`, reorderRow: 'Ubah urutan baris', resizeColumn: 'Ubah lebar kolom', rowDropped: position => `Baris diletakkan di posisi ${position}`, 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', selectAllRows: 'Pilih semua baris', selectDate: 'Pilih tanggal', selectDateTime: 'Select date and time', selectRow: 'Pilih baris', 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}`, 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: 'Day period', timeSegmentHour: 'Jam', timeSegmentMinute: 'Menit', timeSegmentSecond: 'Detik', toggleColorFormat: 'Beralih format warna', until: 'sampai', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Langkah ${step} dari ${total}`, wizardStepCompleted: step => `${step}, selesai`, year: 'Tahun', zoomIn: 'Perbesar', zoomOut: 'Perkecil', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Halaman tidak dapat dimuat', documentViewerLoadErrorHint: 'Periksa koneksi internet Anda', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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: 'Zoom', 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`, $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\", back: 'Indietro', cancel: 'Cancel', carousel: 'Carosello', chooseDate: 'Scegli una data', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Scegli un orario', clearEntry: 'Cancella inserimento', close: 'Chiudi', collapse: 'Comprimi', 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: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'ss', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Diminuisci', dragToReorder: 'Trascina per riordinare', dropFileHere: 'Trascina il file qui o clicca per sfogliare', dropFilesHere: 'Trascina i file qui o clicca per sfogliare', entriesPerPage: 'Entries per page', error: 'Errore', expand: 'Espandi', finish: 'Fine', from: 'from', goToSlide: (slide, count) => `Vai alla diapositiva ${slide} di ${count}`, halfyear: 'Semestre', hidePassword: 'Nascondi password', increment: 'Aumenta', loading: 'In caricamento', 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: 'Next page', nextSlide: 'Prossima diapositiva', noData: 'Nessun dato', noOptions: 'No options', 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 => { if (num === 0) return 'Nessuna voce'; if (num === 1) return '1 voce'; return `${num} voci`; }, numEntriesLoaded: num => { if (num === 0) return 'Nessuna voce caricata'; if (num === 1) return '1 voce caricata'; return `${num} voci caricate`; }, 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 => { if (num === 0) return 'Nessuna selezione'; if (num === 1) return '1 selezionata'; return `${num} selezionate`; }, numTotal: num => `${num} in totale`, ok: 'OK', onThisPage: 'In questa pagina', optionPosition: (label, position, total) => `${label}, ${position} di ${total}`, page: 'Page', pauseAnimation: 'Metti in pausa animazione', playAnimation: 'Riproduci animazione', previousPage: 'Previous page', 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', resize: 'Ridimensiona', 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', numRowsSelected: num => { if (num === 0) return 'Nessuna riga selezionata'; if (num === 1) return '1 riga selezionata'; return `${num} righe selezionate`; }, pageChanged: (page, total) => `Pagina ${page} di ${total}`, reorderRow: 'Riordina riga', resizeColumn: 'Ridimensiona colonna', rowDropped: position => `Riga rilasciata alla posizione ${position}`, 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', selectAllRows: 'Seleziona tutte le righe', selectDate: 'Seleziona data', selectDateTime: 'Select date and time', selectRow: 'Seleziona riga', 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}`, 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: 'Day period', timeSegmentHour: 'Ora', timeSegmentMinute: 'Minuto', timeSegmentSecond: 'Secondo', toggleColorFormat: 'Cambia formato colore', until: 'fino a', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Passaggio ${step} di ${total}`, wizardStepCompleted: step => `${step}, completato`, year: 'Anno', zoomIn: 'Ingrandire', zoomOut: 'Rimpicciolire', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Impossibile caricare la pagina', documentViewerLoadErrorHint: 'Controlla la tua connessione a Internet', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', 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`, $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によって生成されました', back: '戻る', cancel: 'Cancel', carousel: 'カルーセル', chooseDate: '日付を選択', chooseDateAndTime: 'Choose a date and time', chooseTime: '時刻を選択', clearEntry: 'クリア', close: '閉じる', collapse: '折りたたむ', 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: 'Please fill in this field.', decrement: '減らす', dragToReorder: 'ドラッグして並べ替え', dropFileHere: 'ファイルをここにドロップするか、クリックして参照してください', dropFilesHere: 'ファイルをここにドロップするか、クリックして参照してください', entriesPerPage: 'Entries per page', error: 'エラー', expand: '展開する', finish: '完了', from: 'from', goToSlide: (slide, count) => `${count} 枚中 ${slide} 枚のスライドに移動`, halfyear: '半期', hidePassword: 'パスワードを隠す', increment: '増やす', loading: '読み込み中', mainMenu: 'メインメニュー', maximumValue: label => (label ? `${label} (最大値)` : '最大値'), minimumValue: label => (label ? `${label} (最小値)` : '最小値'), month: '月', more: 'その他', multipleValues: '複数の値', newsMenu: 'ニュースメニュー', newsToggleMenu: 'ニュースメニューの切り替え', next: '次へ', nextPage: 'Next page', nextSlide: '次のスライド', noData: 'データなし', noOptions: 'No options', notificationsRegion: hotkey => `通知、${hotkey}を押してフォーカス`, numCharacters: num => `${num}文字`, numCharactersRemaining: num => `残り${num}文字`, numEntries: num => `${num} 件`, numEntriesLoaded: num => { if (num === 0) return 'ロードされた項目はありません'; return `${num} 件がロードされました`; }, numOptionsAvailable: num => { if (num === 0) return '利用可能な項目はありません'; return `${num} 個の項目が利用可能です`; }, numOptionsSelected: num => { if (num === 0) return '項目が選択されていません'; return `${num} 個の項目が選択されました`; }, numSelected: num => `${num} 件選択`, numTotal: num => `合計 ${num}`, ok: 'OK', onThisPage: 'このページ内', optionPosition: (label, position, total) => `${label}、${total} 件中 ${position} 件目`, page: 'Page', pauseAnimation: 'アニメーションを一時停止', playAnimation: 'アニメーションを再生', previousPage: 'Previous page', previousSlide: '前のスライド', progress: '進行', quarter: '四半期', rangeSelected: (start, end) => `${start}から${end}を選択しました`, // Calendar range selection rangeSelectingFrom: date => `${date}からの範囲を選択中…`, remove: '削除', reset: 'リセット', resize: 'サイズ変更', scrollableRegion: 'スクロール可能領域', scrollToEnd: '最後にスクロールする', scrollToStart: '最初にスクロールする', search: '検索', sectionPages: 'セクションのページ', sections: 'セクション', selectAColorFromTheScreen: '画面から色を選択してください', numRowsSelected: num => { if (num === 0) return '選択された行はありません'; return `${num} 行が選択されました`; }, pageChanged: (page, total) => `${total} ページ中 ${page} ページ目`, reorderRow: '行を並べ替え', resizeColumn: '列の幅を変更', rowDropped: position => `行を位置 ${position} に配置しました`, rowLifted: (position, total) => `行を持ち上げました。位置 ${position} / ${total}。上下矢印キーで移動、スペースキーで配置、Escape でキャンセルします。`, rowMoved: (position, total) => `位置 ${position} / ${total}`, rowReorderCanceled: '並べ替えをキャンセルしました', selectAllRows: 'すべての行を選択', selectDate: '日付を選択', selectDateTime: 'Select date and time', selectRow: '行を選択', 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}`, timeInputBadInput: '有効な時刻を入力してください。', timeInputRangeOverflow: '時刻が遅すぎます。', timeInputRangeUnderflow: '時刻が早すぎます。', timeInputValueMissing: 'このフィールドを入力してください。', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: '時', timeSegmentMinute: '分', timeSegmentSecond: '秒', toggleColorFormat: '色のフォーマットを切り替える', until: 'まで', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `ステップ ${step}/${total}`, wizardStepCompleted: step => `${step}、完了`, year: '年', zoomIn: 'ズームイン', zoomOut: 'ズームアウト', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'ページを読み込めませんでした', documentViewerLoadErrorHint: 'インターネット接続を確認してください', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} 件です`, $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: 'Бұл мазмұнды жасанды интеллект жасаған', back: 'Арта', cancel: 'Cancel', carousel: 'Карусель', chooseDate: 'Күн таңдаңыз', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Уақыт таңдаңыз', clearEntry: 'Жазбаны жою', close: 'Жабу', collapse: 'Жию', 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: 'Please fill in this field.', decrement: 'Азайту', dragToReorder: 'Ретті өзгерту үшін сүйреңіз', dropFileHere: 'Файлды осы жерге тастаңыз немесе таңдау үшін басыңыз', dropFilesHere: 'Файлдарды осы жерге тастаңыз немесе таңдау үшін басыңыз', entriesPerPage: 'Entries per page', error: 'Қате', expand: 'Жаю', finish: 'Аятау', from: 'from', goToSlide: (slide, count) => `${slide}/${count} слайдқа өту`, halfyear: 'Жарты жыл', hidePassword: 'Құпиясөзді жасыру', increment: 'Арттыру', loading: 'Жүктелуде', mainMenu: 'Басты мәзір', maximumValue: label => (label ? `${label} (Ең үлкен мән)` : 'Ең үлкен мән'), minimumValue: label => (label ? `${label} (Ең кіші мән)` : 'Ең кіші мән'), month: 'Ай', more: 'Көбірек', multipleValues: 'Бірнеше мән', newsMenu: 'Жаңалықтар мәзірі', newsToggleMenu: 'Жаңалықтар мәзірін ауыстыру', next: 'Келесі', nextPage: 'Next page', nextSlide: 'Келесі слайд', noData: 'Деректер жоқ', noOptions: 'No options', notificationsRegion: hotkey => `Хабарландырулар, фокустау үшін ${hotkey} басыңыз`, numCharacters: num => { if (num === 1) return '1 таңба'; return `${num} таңба`; }, numCharactersRemaining: num => { if (num === 1) return '1 таңба қалды'; return `${num} таңба қалды`; }, numEntries: num => { if (num === 0) return 'Жазбалар жоқ'; return `${num} жазба`; }, numEntriesLoaded: num => { if (num === 0) return 'Жазбалар жүктелмеді'; if (num === 1) return '1 жазба жүктелді'; return `${num} жазба жүктелді`; }, 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 => { if (num === 0) return 'Ештеңе таңдалмады'; return `${num} таңдалды`; }, numTotal: num => `Барлығы ${num}`, ok: 'OK', onThisPage: 'Осы бетте', optionPosition: (label, position, total) => `${label}, ${position}/${total}`, page: 'Page', pauseAnimation: 'Анимацияны тоқтату', playAnimation: 'Анимацияны ойнату', previousPage: 'Previous page', previousSlide: 'Алдыңғы слайд', progress: 'Прогресс', quarter: 'Тоқсан', rangeSelected: (start, end) => `${start} мен ${end} аралығы таңдалды`, // Calendar range selection rangeSelectingFrom: date => `${date} күнінен бастап аралық таңдалуда…`, remove: 'Жою', reset: 'алпына келтіру', resize: 'Өлшемін өзгерту', scrollableRegion: 'Көтеру/түсіруге болатын аймақ (скролл)', scrollToEnd: 'Соңына түсіру', scrollToStart: 'Басына көтеру', search: 'Іздеу', sectionPages: 'Бөлім беттері', sections: 'Бөлімдер', selectAColorFromTheScreen: 'Экраннан түсті таңдаңыз', numRowsSelected: num => { if (num === 0) return 'Жолдар таңдалмаған'; return `${num} жол таңдалды`; }, pageChanged: (page, total) => `${total} беттің ${page}-беті`, reorderRow: 'Жол ретін өзгерту', resizeColumn: 'Баған енін өзгерту', rowDropped: position => `Жол ${position}-позицияға қойылды`, rowLifted: (position, total) => `Жол көтерілді, позиция ${position} / ${total}. Жоғары және төмен көрсеткілерімен жылжытыңыз, бос орын пернесімен қойыңыз, Escape пернесімен бас тартыңыз.`, rowMoved: (position, total) => `Позиция ${position} / ${total}`, rowReorderCanceled: 'Ретін өзгерту тоқтатылды', selectAllRows: 'Барлық жолдарды таңдау', selectDate: 'Күнді таңдау', selectDateTime: 'Select date and time', selectRow: 'Жолды таңдау', 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}-слайд`, timeInputBadInput: 'Жарамды уақыт енгізіңіз.', timeInputRangeOverflow: 'Уақыт тым кеш.', timeInputRangeUnderflow: 'Уақыт тым ерте.', timeInputValueMissing: 'Бұл өрісті толтырыңыз.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Сағат', timeSegmentMinute: 'Минут', timeSegmentSecond: 'Секунд', toggleColorFormat: 'Түс пішімін ауыстыру', until: 'дейін', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Қадам ${step}/${total}`, wizardStepCompleted: step => `${step}, аяқталды`, year: 'Жыл', zoomIn: 'Жақындату', zoomOut: 'Алыстату', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Бетті жүктеу мүмкін болмады', documentViewerLoadErrorHint: 'Интернет байланысын тексеріңіз', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} файл жүктей аласыз`, $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', back: 'Tilbake', cancel: 'Cancel', carousel: 'Karusell', chooseDate: 'Velg en dato', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Velg et tidspunkt', clearEntry: 'Tøm felt', close: 'Lukk', collapse: 'Skjul', 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: 'q', datePlaceholderWeek: 'uu', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Reduser', dragToReorder: 'Dra for å omorganisere', dropFileHere: 'Slipp filen her eller klikk for å bla gjennom', dropFilesHere: 'Slipp filene her eller klikk for å bla gjennom', entriesPerPage: 'Entries per page', error: 'Feil', expand: 'Vis', finish: 'Fullfør', from: 'from', goToSlide: (slide, count) => `Gå til visning ${slide} av ${count}`, halfyear: 'Halvår', hidePassword: 'Skjul passord', increment: 'Øk', loading: 'Laster', 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: 'Next page', nextSlide: 'Neste visning', noData: 'Ingen data', noOptions: 'No options', 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 => { if (num === 0) return 'Ingen poster'; if (num === 1) return '1 post'; return `${num} poster`; }, numEntriesLoaded: num => { if (num === 0) return 'Ingen poster lastet'; if (num === 1) return '1 post lastet'; return `${num} poster lastet`; }, 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 => { if (num === 0) return 'Ingen valgt'; return `${num} valgt`; }, numTotal: num => `${num} totalt`, ok: 'OK', onThisPage: 'På denne siden', optionPosition: (label, position, total) => `${label}, ${position} av ${total}`, page: 'Page', pauseAnimation: 'Sett animasjon på pause', playAnimation: 'Spill av animasjon', previousPage: 'Previous page', 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', resize: 'Endre størrelse', 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', numRowsSelected: num => { if (num === 0) return 'Ingen rader valgt'; if (num === 1) return '1 rad valgt'; return `${num} rader valgt`; }, pageChanged: (page, total) => `Side ${page} av ${total}`, reorderRow: 'Flytt rad', resizeColumn: 'Endre kolonnebredde', rowDropped: position => `Rad plassert på posisjon ${position}`, 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', selectAllRows: 'Velg alle rader', selectDate: 'Velg dato', selectDateTime: 'Select date and time', selectRow: 'Velg rad', 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}`, timeInputBadInput: 'Skriv inn et gyldig tidspunkt.', timeInputRangeOverflow: 'Tidspunktet er for sent.', timeInputRangeUnderflow: 'Tidspunktet er for tidlig.', timeInputValueMissing: 'Fyll ut dette feltet.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Time', timeSegmentMinute: 'Minutt', timeSegmentSecond: 'Sekund', toggleColorFormat: 'Bytt fargeformat', until: 'til', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Trinn ${step} av ${total}`, wizardStepCompleted: step => `${step}, fullført`, year: 'År', zoomIn: 'Zoom inn', zoomOut: 'Zoom ut', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Siden kunne ikke lastes inn', documentViewerLoadErrorHint: 'Kontroller internettforbindelsen din', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', 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)`, $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', back: 'Terug', cancel: 'Cancel', carousel: 'Carrousel', chooseDate: 'Een datum kiezen', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Een tijd kiezen', clearEntry: 'Invoer wissen', close: 'Sluiten', collapse: 'Inklappen', 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: 'q', datePlaceholderWeek: 'ww', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Verlagen', dragToReorder: 'Slepen om te herordenen', dropFileHere: 'Sleep bestand hierheen of klik om te bladeren', dropFilesHere: 'Sleep bestanden hierheen of klik om te bladeren', entriesPerPage: 'Entries per page', error: 'Fout', expand: 'Uitklappen', finish: 'Voltooien', from: 'from', goToSlide: (slide, count) => `Ga naar slide ${slide} van ${count}`, halfyear: 'Halfjaar', hidePassword: 'Verberg wachtwoord', increment: 'Verhogen', loading: 'Bezig met laden', 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: 'Next page', nextSlide: 'Volgende dia', noData: 'Geen gegevens', noOptions: 'No options', 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 => { if (num === 0) return 'Geen items'; if (num === 1) return '1 item'; return `${num} items`; }, numEntriesLoaded: num => { if (num === 0) return 'Geen items geladen'; if (num === 1) return '1 item geladen'; return `${num} items geladen`; }, 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 => { if (num === 0) return 'Niets geselecteerd'; return `${num} geselecteerd`; }, numTotal: num => `${num} totaal`, ok: 'OK', onThisPage: 'Op deze pagina', optionPosition: (label, position, total) => `${label}, ${position} van ${total}`, page: 'Page', pauseAnimation: 'Animatie pauzeren', playAnimation: 'Animatie afspelen', previousPage: 'Previous page', 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', resize: 'Formaat 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', numRowsSelected: num => { if (num === 0) return 'Geen rijen geselecteerd'; if (num === 1) return '1 rij geselecteerd'; return `${num} rijen geselecteerd`; }, pageChanged: (page, total) => `Pagina ${page} van ${total}`, reorderRow: 'Rij verplaatsen', resizeColumn: 'Kolombreedte wijzigen', rowDropped: position => `Rij neergezet op positie ${position}`, 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', selectAllRows: 'Alle rijen selecteren', selectDate: 'Datum selecteren', selectDateTime: 'Select date and time', selectRow: 'Rij selecteren', 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}`, 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: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Uur', timeSegmentMinute: 'Minuut', timeSegmentSecond: 'Seconde', toggleColorFormat: 'Wissel kleurnotatie', until: 'tot', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Stap ${step} van ${total}`, wizardStepCompleted: step => `${step}, voltooid`, year: 'Jaar', zoomIn: 'Inzoomen', zoomOut: 'Uitzoomen', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Pagina kon niet worden geladen', documentViewerLoadErrorHint: 'Controleer uw internetverbinding', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', 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`, $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', back: 'Tilbake', cancel: 'Cancel', carousel: 'Karusell', chooseDate: 'Vel ein dato', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Vel eit tidspunkt', clearEntry: 'Tøm felt', close: 'Lukk', collapse: 'Skjul', 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: 'q', datePlaceholderWeek: 'vv', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Reduser', dragToReorder: 'Dra for å omorganisere', dropFileHere: 'Slepp fila her eller klikk for å bla gjennom', dropFilesHere: 'Slepp filene her eller klikk for å bla gjennom', entriesPerPage: 'Entries per page', error: 'Feil', expand: 'Vis', finish: 'Fullfør', from: 'from', goToSlide: (slide, count) => `Gå til visning ${slide} av ${count}`, halfyear: 'Halvår', hidePassword: 'Gøym passord', increment: 'Auk', loading: 'Lastar', 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: 'Next page', nextSlide: 'Neste visning', noData: 'Ingen data', noOptions: 'No options', 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 => { if (num === 0) return 'Ingen postar'; if (num === 1) return '1 post'; return `${num} postar`; }, numEntriesLoaded: num => { if (num === 0) return 'Ingen postar lasta'; if (num === 1) return '1 post lasta'; return `${num} postar lasta`; }, 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 => { if (num === 0) return 'Ingen valde'; return `${num} valde`; }, numTotal: num => `${num} totalt`, ok: 'OK', onThisPage: 'På denne sida', optionPosition: (label, position, total) => `${label}, ${position} av ${total}`, page: 'Page', pauseAnimation: 'Set animasjon på pause', playAnimation: 'Spel av animasjon', previousPage: 'Previous page', 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', resize: 'Endre storleik', 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', numRowsSelected: num => { if (num === 0) return 'Ingen rader valde'; if (num === 1) return '1 rad vald'; return `${num} rader valde`; }, pageChanged: (page, total) => `Side ${page} av ${total}`, reorderRow: 'Flytt rad', resizeColumn: 'Endre kolonnebreidde', rowDropped: position => `Rad plassert på posisjon ${position}`, 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', selectAllRows: 'Vel alle rader', selectDate: 'Vel dato', selectDateTime: 'Select date and time', selectRow: 'Vel rad', 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}`, timeInputBadInput: 'Skriv inn eit gyldig tidspunkt.', timeInputRangeOverflow: 'Tidspunktet er for seint.', timeInputRangeUnderflow: 'Tidspunktet er for tidleg.', timeInputValueMissing: 'Fyll ut dette feltet.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Time', timeSegmentMinute: 'Minutt', timeSegmentSecond: 'Sekund', toggleColorFormat: 'Byt fargeformat', until: 'til', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Steg ${step} av ${total}`, wizardStepCompleted: step => `${step}, fullført`, year: 'År', zoomIn: 'Zoom inn', zoomOut: 'Zoom ut', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Sida kunne ikkje lastast inn', documentViewerLoadErrorHint: 'Kontroller internettforbindelsen din', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', 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)`, $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ę', back: 'Wstecz', cancel: 'Cancel', carousel: 'Karuzela', chooseDate: 'Wybierz datę', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Wybierz godzinę', clearEntry: 'Wyczyść wpis', close: 'Zamknij', collapse: 'Zwiń', 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: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'TT', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Zmniejsz', 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: 'Entries per page', error: 'Błąd', expand: 'Rozwiń', finish: 'Zakończ', from: 'from', goToSlide: (slide, count) => `Przejdź do slajdu ${slide} z ${count}`, halfyear: 'Półrocze', hidePassword: 'Ukryj hasło', increment: 'Zwiększ', loading: 'Ładowanie', 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: 'Next page', nextSlide: 'Następny slajd', noData: 'Brak danych', noOptions: 'No options', 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 => { if (num === 0) return 'Brak wpisów'; if (num === 1) return '1 wpis'; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `${num} wpisy`; return `${num} wpisów`; }, numEntriesLoaded: num => { if (num === 0) return 'Nie wczytano wpisów'; if (num === 1) return 'Wczytano 1 wpis'; return `Wczytano ${num} wpisów`; }, numOptionsAvailable: num => { if (num === 0) return 'Brak dostępnych opcji'; if (num === 1) return 'Dostępna 1 opcja'; return `Dostępne ${num} opcje`; }, numOptionsSelected: num => { if (num === 0) return 'Nie wybrano opcji'; if (num === 1) return 'Wybrano 1 opcję'; return `Wybrano ${num} opcje`; }, numSelected: num => { if (num === 0) return 'Nic nie zaznaczono'; return `Zaznaczono ${num}`; }, numTotal: num => `Łącznie ${num}`, ok: 'OK', onThisPage: 'Na tej stronie', optionPosition: (label, position, total) => `${label}, ${position} z ${total}`, page: 'Page', pauseAnimation: 'Wstrzymaj animację', playAnimation: 'Odtwórz animację', previousPage: 'Previous page', 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', resize: 'Zmień rozmiar', 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', 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`; }, pageChanged: (page, total) => `Strona ${page} z ${total}`, reorderRow: 'Przenieś wiersz', resizeColumn: 'Zmień szerokość kolumny', rowDropped: position => `Wiersz upuszczony na pozycji ${position}`, 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', selectAllRows: 'Zaznacz wszystkie wiersze', selectDate: 'Wybierz datę', selectDateTime: 'Select date and time', selectRow: 'Zaznacz wiersz', 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}`, 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: 'Day period', timeSegmentHour: 'Godzina', timeSegmentMinute: 'Minuta', timeSegmentSecond: 'Sekunda', toggleColorFormat: 'Przełącz format', until: 'do', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Krok ${step} z ${total}`, wizardStepCompleted: step => `${step}, ukończono`, year: 'Rok', zoomIn: 'Powiększ', zoomOut: 'Pomniejsz', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Nie można załadować strony', documentViewerLoadErrorHint: 'Sprawdź połączenie z internetem', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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)`, $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', back: 'Voltar', cancel: 'Cancel', carousel: 'Carrossel', chooseDate: 'Escolher uma data', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Escolher uma hora', clearEntry: 'Limpar entrada', close: 'Fechar', collapse: 'Recolher', 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: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'ss', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Diminuir', dragToReorder: 'Arraste para reordenar', dropFileHere: 'Solte o arquivo aqui ou clique para procurar', dropFilesHere: 'Solte os arquivos aqui ou clique para procurar', entriesPerPage: 'Entries per page', error: 'Erro', expand: 'Expandir', finish: 'Finalizar', from: 'from', goToSlide: (slide, count) => `Vá para o slide ${slide} de ${count}`, halfyear: 'Semestre', hidePassword: 'Esconder a senha', increment: 'Aumentar', loading: 'Carregando', 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: 'Next page', nextSlide: 'Próximo slide', noData: 'Sem dados', noOptions: 'No options', 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 => { if (num === 0) return 'Sem entradas'; if (num === 1) return '1 entrada'; return `${num} entradas`; }, numEntriesLoaded: num => { if (num === 0) return 'Nenhuma entrada carregada'; if (num === 1) return '1 entrada carregada'; return `${num} entradas carregadas`; }, 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 => { if (num === 0) return 'Nenhuma selecionada'; if (num === 1) return '1 selecionada'; return `${num} selecionadas`; }, numTotal: num => `${num} no total`, ok: 'OK', onThisPage: 'Nesta página', optionPosition: (label, position, total) => `${label}, ${position} de ${total}`, page: 'Page', pauseAnimation: 'Pausar animação', playAnimation: 'Reproduzir animação', previousPage: 'Previous page', 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', resize: 'Mudar o tamanho', 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', numRowsSelected: num => { if (num === 0) return 'Nenhuma linha selecionada'; if (num === 1) return '1 linha selecionada'; return `${num} linhas selecionadas`; }, pageChanged: (page, total) => `Página ${page} de ${total}`, reorderRow: 'Reordenar linha', resizeColumn: 'Redimensionar coluna', rowDropped: position => `Linha solta na posição ${position}`, 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', selectAllRows: 'Selecionar todas as linhas', selectDate: 'Selecionar data', selectDateTime: 'Select date and time', selectRow: 'Selecionar linha', 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}`, 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: 'Day period', timeSegmentHour: 'Hora', timeSegmentMinute: 'Minuto', timeSegmentSecond: 'Segundo', toggleColorFormat: 'Trocar o formato de cor', until: 'até', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Passo ${step} de ${total}`, wizardStepCompleted: step => `${step}, concluído`, year: 'Ano', zoomIn: 'Aumentar zoom', zoomOut: 'Diminuir zoom', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Não foi possível carregar a página', documentViewerLoadErrorHint: 'Verifique a sua ligação à Internet', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', 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)`, $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: 'Этот контент был создан ИИ', back: 'Назад', cancel: 'Cancel', carousel: 'Карусель', chooseDate: 'Выберите дату', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Выберите время', clearEntry: 'Очистить запись', close: 'Закрыть', collapse: 'Свернуть', 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: 'Please fill in this field.', decrement: 'Уменьшить', dragToReorder: 'Перетащите для изменения порядка', dropFileHere: 'Перетащите файл сюда или нажмите для выбора', dropFilesHere: 'Перетащите файлы сюда или нажмите для выбора', entriesPerPage: 'Entries per page', error: 'Ошибка', expand: 'Развернуть', finish: 'Завершить', from: 'from', goToSlide: (slide, count) => `Перейти к слайду ${slide} из ${count}`, halfyear: 'Полугодие', hidePassword: 'Скрыть пароль', increment: 'Увеличить', loading: 'Загрузка', mainMenu: 'Главное меню', maximumValue: label => (label ? `${label} (Максимальное значение)` : 'Максимальное значение'), minimumValue: label => (label ? `${label} (Минимальное значение)` : 'Минимальное значение'), month: 'Месяц', more: 'Ещё', multipleValues: 'Несколько значений', newsMenu: 'Меню новостей', newsToggleMenu: 'Переключить меню новостей', next: 'Далее', nextPage: 'Next page', nextSlide: 'Следующий слайд', noData: 'Нет данных', noOptions: 'No options', 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 => { 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} записей`; }, numEntriesLoaded: num => { if (num === 0) return 'Загружено 0 записей'; if (num === 1) return 'Загружена 1 запись'; return `Загружено ${num} записей`; }, numOptionsAvailable: num => { if (num === 0) return 'доступно 0 вариантов'; if (num === 1) return 'Доступен 1 вариант'; return `доступно ${num} варианта`; }, numOptionsSelected: num => { if (num === 0) return 'выбрано 0 вариантов'; if (num === 1) return 'Выбран 1 вариант'; return `выбрано ${num} варианта`; }, numSelected: num => { if (num === 0) return 'Ничего не выбрано'; return `Выбрано ${num}`; }, numTotal: num => `Всего ${num}`, ok: 'OK', onThisPage: 'На этой странице', optionPosition: (label, position, total) => `${label}, ${position} из ${total}`, page: 'Page', pauseAnimation: 'Приостановить анимацию', playAnimation: 'Воспроизвести анимацию', previousPage: 'Previous page', previousSlide: 'Предыдущий слайд', progress: 'Прогресс', quarter: 'Квартал', rangeSelected: (start, end) => `Выбрано с ${start} по ${end}`, // Calendar range selection rangeSelectingFrom: date => `Выбор диапазона с ${date}…`, remove: 'Удалить', reset: 'Сбросить', resize: 'Изменить размер', scrollableRegion: 'Scrollable region', scrollToEnd: 'Пролистать до конца', scrollToStart: 'Пролистать к началу', search: 'Поиск', sectionPages: 'Страницы раздела', sections: 'Разделы', selectAColorFromTheScreen: 'Выберите цвет на экране', 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} строк`; }, pageChanged: (page, total) => `Страница ${page} из ${total}`, reorderRow: 'Переместить строку', resizeColumn: 'Изменить ширину столбца', rowDropped: position => `Строка опущена на позицию ${position}`, rowLifted: (position, total) => `Строка поднята, позиция ${position} из ${total}. Стрелки вверх и вниз перемещают, пробел опускает, Escape отменяет.`, rowMoved: (position, total) => `Позиция ${position} из ${total}`, rowReorderCanceled: 'Перемещение отменено', selectAllRows: 'Выбрать все строки', selectDate: 'Выбрать дату', selectDateTime: 'Select date and time', selectRow: 'Выбрать строку', 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}`, timeInputBadInput: 'Введите корректное время.', timeInputRangeOverflow: 'Время слишком позднее.', timeInputRangeUnderflow: 'Время слишком раннее.', timeInputValueMissing: 'Заполните это поле.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Час', timeSegmentMinute: 'Минута', timeSegmentSecond: 'Секунда', toggleColorFormat: 'Переключить цветовую модель', until: 'до', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Шаг ${step} из ${total}`, wizardStepCompleted: step => `${step}, завершён`, year: 'Год', zoomIn: 'Увеличить', zoomOut: 'Уменьшить', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Не удалось загрузить страницу', documentViewerLoadErrorHint: 'Проверьте подключение к интернету', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} файл(ов)`, $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', back: 'Nazaj', cancel: 'Cancel', carousel: 'Vrtiljak', chooseDate: 'Izberite datum', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Izberite čas', clearEntry: 'Počisti vnos', close: 'Zapri', collapse: 'Strni', 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: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'TT', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Zmanjšaj', dragToReorder: 'Povleci za prerazporeditev', dropFileHere: 'Spustite datoteko tukaj ali kliknite za brskanje', dropFilesHere: 'Spustite datoteke tukaj ali kliknite za brskanje', entriesPerPage: 'Entries per page', error: 'Napaka', expand: 'Razširi', finish: 'Zaključi', from: 'from', goToSlide: (slide, count) => `Pojdi na diapozitiv ${slide} od ${count}`, halfyear: 'Polletje', hidePassword: 'Skrij geslo', increment: 'Povečaj', loading: 'Nalaganje', 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: 'Next page', nextSlide: 'Naslednji diapozitiv', noData: 'Ni podatkov', noOptions: 'No options', 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 => { if (num === 0) return 'Ni vnosov'; if (num === 1) return '1 vnos'; if (num === 2) return '2 vnosa'; if (num === 3 || num === 4) return `${num} vnosi`; return `${num} vnosov`; }, numEntriesLoaded: num => { if (num === 0) return 'Ni naloženih vnosov'; if (num === 1) return 'Naložen 1 vnos'; if (num === 2) return 'Naložena 2 vnosa'; if (num === 3 || num === 4) return `Naloženi ${num} vnosi`; return `Naloženih ${num} vnosov`; }, 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 => { if (num === 0) return 'Nič izbranega'; return `${num} izbranih`; }, numTotal: num => `${num} skupaj`, ok: 'OK', onThisPage: 'Na tej strani', optionPosition: (label, position, total) => `${label}, ${position} od ${total}`, page: 'Page', pauseAnimation: 'Zaustavi animacijo', playAnimation: 'Predvajaj animacijo', previousPage: 'Previous page', 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', resize: 'Spremeni velikost', 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', 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`; }, pageChanged: (page, total) => `Stran ${page} od ${total}`, reorderRow: 'Premakni vrstico', resizeColumn: 'Spremeni širino stolpca', rowDropped: position => `Vrstica odložena na položaj ${position}`, 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', selectAllRows: 'Izberi vse vrstice', selectDate: 'Izberi datum', selectDateTime: 'Select date and time', selectRow: 'Izberi vrstico', 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}`, 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: 'Day period', timeSegmentHour: 'Ura', timeSegmentMinute: 'Minuta', timeSegmentSecond: 'Sekunda', toggleColorFormat: 'Preklopi format barve', until: 'do', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Korak ${step} od ${total}`, wizardStepCompleted: step => `${step}, zaključeno`, year: 'Leto', zoomIn: 'Povečaj', zoomOut: 'Pomanjšaj', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Strani ni mogoče naložiti', documentViewerLoadErrorHint: 'Preverite internetno povezavo', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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`, $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', back: 'Tillbaka', cancel: 'Cancel', carousel: 'Karusell', chooseDate: 'Välj ett datum', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Välj en tid', clearEntry: 'Återställ val', close: 'Stäng', collapse: 'Fäll ihop', 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: 'q', datePlaceholderWeek: 'vv', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Minska', 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: 'Entries per page', error: 'Fel', expand: 'Expandera', finish: 'Slutför', from: 'from', goToSlide: (slide, count) => `Gå till bild ${slide} av ${count}`, halfyear: 'Halvår', hidePassword: 'Dölj lösenord', increment: 'Öka', loading: 'Läser in', 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: 'Next page', nextSlide: 'Nästa bild', noData: 'Inga data', noOptions: 'No options', 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 => { if (num === 0) return 'Inga poster'; if (num === 1) return '1 post'; return `${num} poster`; }, numEntriesLoaded: num => { if (num === 0) return 'Inga poster laddade'; if (num === 1) return '1 post laddad'; return `${num} poster laddade`; }, 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 => { if (num === 0) return 'Inget valt'; return `${num} valda`; }, numTotal: num => `${num} totalt`, ok: 'OK', onThisPage: 'På denna sida', optionPosition: (label, position, total) => `${label}, ${position} av ${total}`, page: 'Page', pauseAnimation: 'Pausa animation', playAnimation: 'Spela upp animation', previousPage: 'Previous page', 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', resize: 'Ändra storlek', 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', numRowsSelected: num => { if (num === 0) return 'Inga rader valda'; if (num === 1) return '1 rad vald'; return `${num} rader valda`; }, pageChanged: (page, total) => `Sida ${page} av ${total}`, reorderRow: 'Flytta rad', resizeColumn: 'Ändra kolumnbredd', rowDropped: position => `Rad placerad på position ${position}`, 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', selectAllRows: 'Välj alla rader', selectDate: 'Välj datum', selectDateTime: 'Select date and time', selectRow: 'Välj rad', 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}`, 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: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Timme', timeSegmentMinute: 'Minut', timeSegmentSecond: 'Sekund', toggleColorFormat: 'Växla färgformat', until: 'till', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Steg ${step} av ${total}`, wizardStepCompleted: step => `${step}, slutförd`, year: 'År', zoomIn: 'Zooma in', zoomOut: 'Zooma ut', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Sidan kunde inte läsas in', documentViewerLoadErrorHint: 'Kontrollera din internetanslutning', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', 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)`, $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', back: 'Geri', cancel: 'Cancel', carousel: 'Atlıkarınca', chooseDate: 'Bir tarih seçin', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Bir saat seçin', clearEntry: 'Girişi sil', close: 'Kapat', collapse: 'Daralt', 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: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'HH', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) 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: 'Please fill in this field.', decrement: 'Azalt', 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: 'Entries per page', error: 'Hata', expand: 'Genişlet', finish: 'Bitir', from: 'from', goToSlide: (slide, count) => `${count} slayttan ${slide} slayta gidin`, halfyear: 'Yarıyıl', hidePassword: 'Şifreyi sakla', increment: 'Artır', loading: 'Yükleme', 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: 'Next page', nextSlide: 'Sonraki slayt', noData: 'Veri yok', noOptions: 'No options', 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 => { if (num === 0) return 'Kayıt yok'; return `${num} kayıt`; }, numEntriesLoaded: num => { if (num === 0) return 'Hiç kayıt yüklenmedi'; if (num === 1) return '1 kayıt yüklendi'; return `${num} kayıt yüklendi`; }, 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 => { if (num === 0) return 'Seçim yok'; return `${num} seçildi`; }, numTotal: num => `Toplam ${num}`, ok: 'OK', onThisPage: 'Bu sayfada', optionPosition: (label, position, total) => `${label}, ${position}/${total}`, page: 'Page', pauseAnimation: 'Animasyonu duraklat', playAnimation: 'Animasyonu oynat', previousPage: 'Previous page', 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', resize: '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', numRowsSelected: num => { if (num === 0) return 'Seçili satır yok'; return `${num} satır seçildi`; }, pageChanged: (page, total) => `Sayfa ${page} / ${total}`, reorderRow: 'Satırı taşı', resizeColumn: 'Sütun genişliğini değiştir', rowDropped: position => `Satır ${position}. konuma bırakıldı`, 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', selectAllRows: 'Tüm satırları seç', selectDate: 'Tarih seç', selectDateTime: 'Select date and time', selectRow: 'Satırı seç', 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}`, 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: 'Day period', timeSegmentHour: 'Saat', timeSegmentMinute: 'Dakika', timeSegmentSecond: 'Saniye', toggleColorFormat: 'Renk biçimini değiştir', until: 'kadar', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Adım ${step}/${total}`, wizardStepCompleted: step => `${step}, tamamlandı`, year: 'Yıl', zoomIn: 'Yakınlaştır', zoomOut: 'Uzaklaştır', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Sayfa yüklenemedi', documentViewerLoadErrorHint: 'İnternet bağlantınızı kontrol edin', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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`, $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: 'Цей контент створено штучним інтелектом', back: 'Назад', cancel: 'Cancel', carousel: 'Карусель', chooseDate: 'Виберіть дату', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Виберіть час', clearEntry: 'Очистити поле', close: 'Закрити', collapse: 'Згорнути', 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: 'Please fill in this field.', decrement: 'Зменшити', dragToReorder: 'Перетягніть для зміни порядку', dropFileHere: 'Перетягніть файл сюди або натисніть, щоб вибрати', dropFilesHere: 'Перетягніть файли сюди або натисніть, щоб вибрати', entriesPerPage: 'Entries per page', error: 'Збій', expand: 'Розгорнути', finish: 'Завершити', from: 'from', goToSlide: (slide, count) => `Перейти до слайда №${slide} з ${count}`, halfyear: 'Півріччя', hidePassword: 'Приховати пароль', increment: 'Збільшити', loading: 'Завантаження', mainMenu: 'Головне меню', maximumValue: label => (label ? `${label} (Максимальне значення)` : 'Максимальне значення'), minimumValue: label => (label ? `${label} (Мінімальне значення)` : 'Мінімальне значення'), month: 'Місяць', more: 'Більше', multipleValues: 'Кілька значень', newsMenu: 'Меню новин', newsToggleMenu: 'Переключити меню новин', next: 'Далі', nextPage: 'Next page', nextSlide: 'Наступний слайд', noData: 'Немає даних', noOptions: 'No options', 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 => { 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} записів`; }, numEntriesLoaded: num => { const n = num % 10; if (num === 0) return 'не завантажено записів'; if (n === 1 && num !== 11) return `завантажено ${num} запис`; if ((n === 2 || n === 3 || n === 4) && (num < 12 || num > 14)) return `завантажено ${num} записи`; return `завантажено ${num} записів`; }, numOptionsAvailable: num => { const n = num % 10; if (n === 0) return 'немає доступних варіантів'; if (n === 1) return `доступний ${num} варіант`; if (n === 2 || n === 3 || n === 4) return `доступні ${num} варіанти`; return `доступно ${num} варіантів`; }, numOptionsSelected: num => { const n = num % 10; if (n === 0) return 'не вибрано варіантів'; if (n === 1) return 'вибрано 1 варіант'; if (n === 2 || n === 3 || n === 4) return `вибрано ${num} варіанти`; return `вибрано ${num} варіантів`; }, numSelected: num => { if (num === 0) return 'Нічого не вибрано'; return `Вибрано ${num}`; }, numTotal: num => `Усього ${num}`, ok: 'OK', onThisPage: 'На цій сторінці', optionPosition: (label, position, total) => `${label}, ${position} з ${total}`, page: 'Page', pauseAnimation: 'Призупинити анімацію', playAnimation: 'Відтворити анімацію', previousPage: 'Previous page', previousSlide: 'Попередній слайд', progress: 'Поступ', quarter: 'Квартал', rangeSelected: (start, end) => `Вибрано з ${start} по ${end}`, // Calendar range selection rangeSelectingFrom: date => `Вибір діапазону з ${date}…`, remove: 'Видалити', reset: 'Скинути', resize: 'Змінити розмір', scrollableRegion: 'Область з можливістю прокрутки', scrollToEnd: 'Прокрутити в кінець', scrollToStart: 'Прокрутити на початок', search: 'Пошук', sectionPages: 'Сторінки розділу', sections: 'Розділи', selectAColorFromTheScreen: 'Виберіть колір на екрані', 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} рядків`; }, pageChanged: (page, total) => `Сторінка ${page} з ${total}`, reorderRow: 'Перемістити рядок', resizeColumn: 'Змінити ширину стовпця', rowDropped: position => `Рядок опущено на позицію ${position}`, rowLifted: (position, total) => `Рядок піднято, позиція ${position} з ${total}. Стрілки вгору та вниз переміщують, пробіл опускає, Escape скасовує.`, rowMoved: (position, total) => `Позиція ${position} з ${total}`, rowReorderCanceled: 'Переміщення скасовано', selectAllRows: 'Вибрати всі рядки', selectDate: 'Вибрати дату', selectDateTime: 'Select date and time', selectRow: 'Вибрати рядок', 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}`, timeInputBadInput: 'Введіть припустимий час.', timeInputRangeOverflow: 'Час занадто пізній.', timeInputRangeUnderflow: 'Час занадто ранній.', timeInputValueMissing: 'Заповніть це поле.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Година', timeSegmentMinute: 'Хвилина', timeSegmentSecond: 'Секунда', toggleColorFormat: 'Переключити кольорову модель', until: 'до', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `Крок ${step} з ${total}`, wizardStepCompleted: step => `${step}, завершено`, year: 'Рік', zoomIn: 'Збільшити', zoomOut: 'Зменшити', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Не вдалося завантажити сторінку', documentViewerLoadErrorHint: 'Перевірте підключення до інтернету', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} файл(ів)`, $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: '此内容由人工智能生成', back: '返回', cancel: 'Cancel', carousel: '跑马灯', chooseDate: '选择日期', chooseDateAndTime: 'Choose a date and time', chooseTime: '选择时间', clearEntry: '清空', close: '关闭', collapse: '折叠', 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: 'Please fill in this field.', decrement: '减少', dragToReorder: '拖动以重新排序', dropFileHere: '将文件拖到此处或点击浏览', dropFilesHere: '将文件拖到此处或点击浏览', entriesPerPage: 'Entries per page', error: '错误', expand: '展开', finish: '完成', from: 'from', goToSlide: (slide, count) => `转到第 ${slide} 张幻灯片，共 ${count} 张`, halfyear: '半年', hidePassword: '隐藏密码', increment: '增加', loading: '加载中', mainMenu: '主菜单', maximumValue: label => (label ? `${label} (最大值)` : '最大值'), minimumValue: label => (label ? `${label} (最小值)` : '最小值'), month: '月', more: '更多', multipleValues: '多个值', newsMenu: '新闻菜单', newsToggleMenu: '切换新闻菜单', next: '下一步', nextPage: 'Next page', nextSlide: '下一张幻灯片', noData: '暂无数据', noOptions: 'No options', notificationsRegion: hotkey => `通知，按 ${hotkey} 聚焦`, numCharacters: num => `${num}个字符`, numCharactersRemaining: num => `剩余${num}个字符`, numEntries: num => { if (num === 0) return '无条目'; return `${num} 条`; }, numEntriesLoaded: num => { if (num === 0) return '未加载任何条目'; if (num === 1) return '已加载 1 条'; return `已加载 ${num} 条`; }, 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 => { if (num === 0) return '未选择'; return `已选 ${num} 项`; }, numTotal: num => `共 ${num}`, ok: 'OK', onThisPage: '本页内容', optionPosition: (label, position, total) => `${label}，第 ${position} 项，共 ${total} 项`, page: 'Page', pauseAnimation: '暂停动画', playAnimation: '播放动画', previousPage: 'Previous page', previousSlide: '上一张幻灯片', progress: '进度', quarter: '季度', rangeSelected: (start, end) => `已选择 ${start} 至 ${end}`, // Calendar range selection rangeSelectingFrom: date => `正在选择从 ${date} 开始的范围…`, remove: '删除', reset: '重置', resize: '调整大小', scrollableRegion: '可滚动区域', scrollToEnd: '滚动至页尾', scrollToStart: '滚动至页首', search: '搜索', sectionPages: '板块页面', sections: '板块', selectAColorFromTheScreen: '从屏幕中选择一种颜色', numRowsSelected: num => { if (num === 0) return '未选择任何行'; return `已选择 ${num} 行`; }, pageChanged: (page, total) => `第 ${page} 页，共 ${total} 页`, reorderRow: '调整行顺序', resizeColumn: '调整列宽', rowDropped: position => `行已放置到第 ${position} 位`, rowLifted: (position, total) => `行已提起，第 ${position} 位，共 ${total} 行。使用上下方向键移动，空格键放下，Escape 取消。`, rowMoved: (position, total) => `第 ${position} 位，共 ${total} 行`, rowReorderCanceled: '已取消调整顺序', selectAllRows: '选择所有行', selectDate: '选择日期', selectDateTime: 'Select date and time', selectRow: '选择行', 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}`, timeInputBadInput: '请输入有效的时间。', timeInputRangeOverflow: '时间太晚。', timeInputRangeUnderflow: '时间太早。', timeInputValueMissing: '请填写此字段。', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: '时', timeSegmentMinute: '分', timeSegmentSecond: '秒', toggleColorFormat: '切换颜色模式', until: '至', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `第 ${step} 步，共 ${total} 步`, wizardStepCompleted: step => `${step}，已完成`, year: '年', zoomIn: '放大', zoomOut: '缩小', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: '无法加载页面', documentViewerLoadErrorHint: '请检查您的网络连接', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} 个文件`, $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: '此內容由人工智慧生成', back: '返回', cancel: 'Cancel', carousel: '幻燈片', chooseDate: '選擇日期', chooseDateAndTime: 'Choose a date and time', chooseTime: '選擇時間', clearEntry: '清空', close: '關閉', collapse: '折疊', 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: 'Please fill in this field.', decrement: '減少', dragToReorder: '拖曳以重新排序', dropFileHere: '將檔案拖曳至此或點擊瀏覽', dropFilesHere: '將檔案拖曳至此或點擊瀏覽', entriesPerPage: 'Entries per page', error: '錯誤', expand: '展開', finish: '完成', from: 'from', goToSlide: (slide, count) => `轉到第 ${slide} 張幻燈片，共 ${count} 張`, halfyear: '半年', hidePassword: '隱藏密碼', increment: '增加', loading: '載入中', mainMenu: '主選單', maximumValue: label => (label ? `${label} (最大值)` : '最大值'), minimumValue: label => (label ? `${label} (最小值)` : '最小值'), month: '月', more: '更多', multipleValues: '多個值', newsMenu: '新聞選單', newsToggleMenu: '切換新聞選單', next: '下一步', nextPage: 'Next page', nextSlide: '下一張幻燈片', noData: '無資料', noOptions: 'No options', notificationsRegion: hotkey => `通知，按 ${hotkey} 聚焦`, numCharacters: num => `${num}個字元`, numCharactersRemaining: num => `剩餘${num}個字元`, numEntries: num => { if (num === 0) return '無項目'; return `${num} 筆`; }, numEntriesLoaded: num => { if (num === 0) return '未載入任何項目'; if (num === 1) return '已載入 1 筆'; return `已載入 ${num} 筆`; }, 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 => { if (num === 0) return '未選取'; return `已選 ${num} 項`; }, numTotal: num => `共 ${num}`, ok: 'OK', onThisPage: '本頁內容', optionPosition: (label, position, total) => `${label}，第 ${position} 項，共 ${total} 項`, page: 'Page', pauseAnimation: '暫停動畫', playAnimation: '播放動畫', previousPage: 'Previous page', previousSlide: '上一張幻燈片', progress: '進度', quarter: '季度', rangeSelected: (start, end) => `已選擇 ${start} 至 ${end}`, // Calendar range selection rangeSelectingFrom: date => `正在選擇從 ${date} 開始的範圍…`, remove: '移除', reset: '重置', resize: '調整大小', scrollableRegion: '可捲動区域', scrollToEnd: '捲至頁尾', scrollToStart: '捲至頁首', search: '搜尋', sectionPages: '區塊頁面', sections: '區塊', selectAColorFromTheScreen: '從螢幕中選擇一種顏色', numRowsSelected: num => { if (num === 0) return '未選取任何列'; return `已選取 ${num} 列`; }, pageChanged: (page, total) => `第 ${page} 頁，共 ${total} 頁`, reorderRow: '調整列順序', resizeColumn: '調整欄寬', rowDropped: position => `列已放置到第 ${position} 位`, rowLifted: (position, total) => `列已提起，第 ${position} 位，共 ${total} 列。使用上下方向鍵移動，空白鍵放下，Escape 取消。`, rowMoved: (position, total) => `第 ${position} 位，共 ${total} 列`, rowReorderCanceled: '已取消調整順序', selectAllRows: '選取所有列', selectDate: '選擇日期', selectDateTime: 'Select date and time', selectRow: '選取列', 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}`, timeInputBadInput: '請輸入有效的時間。', timeInputRangeOverflow: '時間太晚。', timeInputRangeUnderflow: '時間太早。', timeInputValueMissing: '請填寫此欄位。', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: '時', timeSegmentMinute: '分', timeSegmentSecond: '秒', toggleColorFormat: '切換顏色格式', until: '至', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', weekLabel: week => `CW ${week}`, wizardStep: (step, total) => `第 ${step} 步，共 ${total} 步`, wizardStepCompleted: step => `${step}，已完成`, year: '年', zoomIn: '放大', zoomOut: '縮小', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: '無法載入頁面', documentViewerLoadErrorHint: '請檢查您的網路連線', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', 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} 個檔案`, $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": "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": "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/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/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": "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": "parseDisplayDate",
          "declaration": {
            "name": "parseDisplayDate",
            "module": "internal/date-utils.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": "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/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 */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "FilePickerController",
          "declaration": {
            "name": "FilePickerController",
            "module": "internal/file-picker.js"
          }
        }
      ]
    },
    {
      "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": "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.\nCells with arrow-consuming widgets (inputs, selects, sliders) or multiple\nwidgets keep focus on the cell itself; actions mode (see grid-keyboard-nav)\nis 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"
            },
            {
              "kind": "field",
              "name": "focusedWidget",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "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": "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, focus is delegated to that\nwidget (per WAI-ARIA grid pattern). While in actions mode (grid navigation\ndisabled) focus is delegated to the first widget regardless of kind.\nIn all other cases (no widgets, single arrow-consuming, or multiple widgets)\nfocus stays on the cell and `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 * Cells with arrow-consuming widgets (inputs, selects, sliders) or multiple\n * widgets keep focus on the cell itself; actions mode (see grid-keyboard-nav)\n * is the entry point into those widgets.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "isInteractiveWidget",
          "declaration": {
            "name": "isInteractiveWidget",
            "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"
            }
          }
        },
        {
          "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[][]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "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."
            },
            {
              "kind": "field",
              "name": "virtualNavPending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Guards the async scroll-then-focus path against overlapping virtual jumps."
            },
            {
              "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": "getGrid",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement[][]"
                }
              }
            },
            {
              "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": "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"
                  }
                }
              ]
            },
            {
              "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": "tryTreeToggle",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "'ArrowLeft' | 'ArrowRight'"
                  }
                }
              ],
              "description": "Treegrid arrows: returns true when the onTreeToggle hook consumed the key."
            },
            {
              "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 *data* row. Under virtual scroll the\nlast row usually isn't rendered, so scroll it in first; falls back to the last\ncell of the last rendered row for fully-rendered hosts or when no hooks 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"
                }
              }
            },
            {
              "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": "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": "internal/grid-selection.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Manages row selection state for grid components.\nSupports single and multi-row selection with Shift (range) and Ctrl/Meta (toggle) modifiers.\n\nThe controller operates purely on **absolute data-space row indices** and the\n**keys** the host resolves from them — never on DOM rows. This keeps selection\ncorrect under virtual scrolling, where the rendered rows are only a window into\nthe dataset: `selectAll` covers every row (not just the window), a Shift-range\nspans rows currently scrolled out of view, and the range anchor stays valid\nacross scrolls because it is an absolute index rather than a window position.",
          "name": "GridSelectionController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "GridControllerHost"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "options",
              "type": {
                "text": "GridSelectionOptions"
              },
              "privacy": "private",
              "default": "options"
            },
            {
              "kind": "field",
              "name": "selectedKeys",
              "type": {
                "text": "Set<unknown>"
              },
              "privacy": "private",
              "default": "new Set()"
            },
            {
              "kind": "field",
              "name": "anchorIndex",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The absolute row index of the last directly-activated row, the anchor for Shift+click range."
            },
            {
              "kind": "field",
              "name": "baseSelection",
              "type": {
                "text": "Set<unknown>"
              },
              "privacy": "private",
              "default": "new Set()",
              "description": "Selection snapshot taken when the anchor was set. Shift+range is merged with this."
            },
            {
              "kind": "method",
              "name": "hostConnected"
            },
            {
              "kind": "method",
              "name": "hostDisconnected"
            },
            {
              "kind": "method",
              "name": "getSelectedKeys",
              "return": {
                "type": {
                  "text": "Set<unknown>"
                }
              },
              "description": "Returns a copy of the set of selected row keys."
            },
            {
              "kind": "method",
              "name": "isSelected",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "key",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "Returns true if the given key is currently selected."
            },
            {
              "kind": "method",
              "name": "toggleRow",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "rowIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "event",
                  "optional": true,
                  "type": {
                    "text": "MouseEvent | KeyboardEvent"
                  }
                }
              ],
              "description": "Toggles selection for the row at the given absolute index.\n\nModifier key behavior (multi-select only):\n- Shift: select a contiguous range from the last anchor to this row.\n- Ctrl/Meta: toggle this row without affecting others.\n- No modifier: replace selection with just this row, or deselect if already the only selection."
            },
            {
              "kind": "method",
              "name": "toggleRowAdditive",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "rowIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Toggles a row additively (adds or removes from current selection without clearing others).\nUsed for checkbox clicks in multi-select mode."
            },
            {
              "kind": "method",
              "name": "selectAll",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Selects every selectable row in the dataset, replacing the current selection. Only effective in\nmulti-select mode. Covers all rows the host reports, not just the ones currently rendered\n(virtual scroll) — the header \"select all\" checkbox must mean the whole set."
            },
            {
              "kind": "method",
              "name": "selectReported",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Adds the rows the host currently reports to the selection, leaving anything outside that set\nalone.\n\nFor hosts whose reported set is a page rather than the whole dataset, this is what \"select all\"\nhas to mean: an action scoped to one page must not clear another. Where the reported set is\neverything, it behaves like selectAll."
            },
            {
              "kind": "method",
              "name": "deselectReported",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Removes the reported rows from the selection — the counterpart to selectReported."
            },
            {
              "kind": "method",
              "name": "deselectAll",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Clears all row selections, including rows the host does not currently report."
            },
            {
              "kind": "method",
              "name": "setAnchor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "rowIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Sets the anchor index and snapshots the current selection for Shift+range."
            },
            {
              "kind": "method",
              "name": "toggleKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "key",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "Adds or removes a key from the selection set."
            },
            {
              "kind": "method",
              "name": "emitChange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Notifies the host and callback of the current selection state."
            }
          ],
          "jsDoc": "/**\n * Manages row selection state for grid components.\n * Supports single and multi-row selection with Shift (range) and Ctrl/Meta (toggle) modifiers.\n *\n * The controller operates purely on **absolute data-space row indices** and the\n * **keys** the host resolves from them — never on DOM rows. This keeps selection\n * correct under virtual scrolling, where the rendered rows are only a window into\n * the dataset: `selectAll` covers every row (not just the window), a Shift-range\n * spans rows currently scrolled out of view, and the range anchor stays valid\n * across scrolls because it is an absolute index rather than a window position.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "GridSelectionController",
          "declaration": {
            "name": "GridSelectionController",
            "module": "internal/grid-selection.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/grid-sort.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Manages sort state for grid components. Supports single and multi-column sorting.\nThe sort stack is ordered by priority (index 0 = primary sort).",
          "name": "GridSortController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "GridControllerHost"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "options",
              "type": {
                "text": "GridSortOptions"
              },
              "privacy": "private",
              "default": "options"
            },
            {
              "kind": "field",
              "name": "sorts",
              "type": {
                "text": "SortEntry[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "method",
              "name": "hostConnected"
            },
            {
              "kind": "method",
              "name": "hostDisconnected"
            },
            {
              "kind": "method",
              "name": "getSorts",
              "return": {
                "type": {
                  "text": "SortEntry[]"
                }
              },
              "description": "Returns a shallow copy of the current sort stack."
            },
            {
              "kind": "method",
              "name": "getColumnSort",
              "return": {
                "type": {
                  "text": "SortEntry | undefined"
                }
              },
              "parameters": [
                {
                  "name": "key",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Returns the sort entry for a column key, or undefined if the column is not sorted."
            },
            {
              "kind": "method",
              "name": "getSortPriority",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "key",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Returns the 1-based sort priority of a column in multi-sort mode.\nReturns 0 if the column is not part of the current sort."
            },
            {
              "kind": "method",
              "name": "toggleSort",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "key",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "multi",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Toggles the sort state for a column, cycling none → asc → desc → none.\n\nWhen `multi` is true and `host.sortMode === 'multi'`, the column is added to\nor updated within the existing sort stack. Otherwise the stack is replaced\nwith only this column's sort.\n\nIf the `onSort` callback returns `false`, the internal state is NOT updated\n(allowing the host to manage sort state externally)."
            }
          ],
          "jsDoc": "/**\n * Manages sort state for grid components. Supports single and multi-column sorting.\n * The sort stack is ordered by priority (index 0 = primary sort).\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "GridSortController",
          "declaration": {
            "name": "GridSortController",
            "module": "internal/grid-sort.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/is-event-from-interactive-element.js",
      "declarations": [
        {
          "kind": "function",
          "name": "isEventFromInteractiveElement",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "event",
              "type": {
                "text": "Event"
              },
              "description": "The UI event"
            },
            {
              "name": "boundary",
              "optional": true,
              "type": {
                "text": "HTMLElement"
              },
              "description": "Optional element at which to stop walking up the composedPath (exclusive)."
            }
          ],
          "description": "Returns true if the event originated from an element that is typically interactive."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "isEventFromInteractiveElement",
          "declaration": {
            "name": "isEventFromInteractiveElement",
            "module": "internal/is-event-from-interactive-element.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/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/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": "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"
            },
            {
              "kind": "field",
              "name": "initialCheckHandle",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "lastReported",
              "type": {
                "text": "boolean | undefined"
              },
              "privacy": "private"
            },
            {
              "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/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": "internal/scrollend-polyfill.js",
      "declarations": [],
      "exports": []
    },
    {
      "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/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"
            },
            {
              "kind": "field",
              "name": "group",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "clone",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "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"
            },
            {
              "kind": "field",
              "name": "lastPosition",
              "type": {
                "text": "'before' | 'after'"
              },
              "privacy": "private",
              "default": "'before'"
            },
            {
              "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": "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/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": "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": "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 will not shrink below.",
              "name": "--ed-dialog-min-width",
              "default": "20rem"
            },
            {
              "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 internal `<dialog>` element.",
              "name": "dialog"
            },
            {
              "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 `title` attribute.",
              "name": "title"
            },
            {
              "description": "The dialog's subtitle. Alternatively, you can use the `subtitle` attribute.",
              "name": "subtitle"
            },
            {
              "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', 'title', 'subtitle')"
            },
            {
              "kind": "field",
              "name": "originalTrigger",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#isOpenAsModal",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Tracks whether this instance is currently counted in the modal-state counter."
            },
            {
              "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": "title",
              "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 `title` slot instead.",
              "attribute": "title",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "subtitle",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The dialog's subtitle. If you need to display HTML, use the `subtitle` slot instead.",
              "attribute": "subtitle",
              "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
            },
            {
              "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.",
              "attribute": "light-dismiss"
            },
            {
              "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 subtitle",
              "attribute": "header-alignment",
              "reflects": true
            },
            {
              "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~='dialog'] { display: flex }` 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. Draggable (non-fullscreen) dialogs open as a\n`popover=\"manual\"`, so they live in the top layer — non-modal, no backdrop, no scroll lock — without portaling\nthe element into `<body>` (which would sever a wrapper's forwarded slots). Everything else opens modally and\nlocks body scrolling."
            },
            {
              "kind": "method",
              "name": "closeNativeDialog",
              "privacy": "private",
              "description": "Closes the native dialog, matching how it was opened (popover vs. modal)."
            },
            {
              "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": "show",
              "privacy": "private",
              "description": "Shows the dialog."
            },
            {
              "kind": "method",
              "name": "centerDialog",
              "privacy": "private",
              "description": "Centers the dialog when it opens. Skipped while resuming from a suspend: a draggable dialog\ncomes back where the user dragged it to rather than jumping to the middle of the viewport."
            },
            {
              "kind": "field",
              "name": "handleDragStart",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDrag",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDragStop",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "title",
              "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 `title` slot instead.",
              "fieldName": "title"
            },
            {
              "name": "subtitle",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The dialog's subtitle. If you need to display HTML, use the `subtitle` slot instead.",
              "fieldName": "subtitle"
            },
            {
              "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"
            },
            {
              "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.",
              "fieldName": "lightDismiss"
            },
            {
              "name": "header-alignment",
              "type": {
                "text": "'stacked' | 'inline'"
              },
              "default": "'stacked'",
              "description": "This is for convenience to switch between stacked and inline headers when using a subtitle",
              "fieldName": "headerAlignment"
            },
            {
              "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 require the user's immediate attention.",
          "jsDoc": "/**\n * @summary Dialogs, sometimes called \"modals\", appear above the page and require the user's immediate attention.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dialog\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('dialog')\n *\n * @dependency ed-button\n * @dependency ed-icon\n *\n * @slot - The dialog's main content.\n * @slot title - The dialog's title. Alternatively, you can use the `title` attribute.\n * @slot subtitle - The dialog's subtitle. Alternatively, you can use the `subtitle` 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 dialog - The dialog's internal `<dialog>` element.\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=20rem] - The width the dialog will not shrink below.\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('dialog')",
          "dependencies": [
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-dialog",
          "customElement": true,
          "modulePath": "components/dialog/dialog.js",
          "definitionPath": "components/dialog/dialog.js",
          "cssStates": []
        }
      ],
      "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 inner ed-dialog.",
              "name": "dialog"
            },
            {
              "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).",
              "name": "title"
            },
            {
              "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
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The heading text. If you need HTML, use the `title` slot.",
              "attribute": "title",
              "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": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "titleId",
              "privacy": "private",
              "readonly": true,
              "default": "`ed-alert-dialog-title-${uniqueId()}`"
            },
            {
              "kind": "field",
              "name": "descId",
              "privacy": "private",
              "readonly": true,
              "default": "`ed-alert-dialog-desc-${uniqueId()}`"
            },
            {
              "kind": "field",
              "name": "innerDialog",
              "type": {
                "text": "EdDialog"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "messageText",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "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": "handleDefaultSlotChange",
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "description": "Emitted before the alert closes. Forwarded from the inner ed-dialog. 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"
            },
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The heading text. If you need HTML, use the `title` slot.",
              "fieldName": "title"
            },
            {
              "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": "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('alertdialog')\n *\n * @dependency ed-dialog\n * @dependency ed-button\n * @dependency ed-icon\n *\n * @slot - The message body.\n * @slot title - Override the title (HTML).\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 ed-hide - Emitted before the alert closes. Forwarded from the inner ed-dialog. Cancelable; calling\n *  `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 dialog - The inner ed-dialog.\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('alertdialog')",
          "dependencies": [
            "ed-dialog",
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-alert-dialog",
          "customElement": true,
          "modulePath": "components/alert-dialog/alert-dialog.js",
          "definitionPath": "components/alert-dialog/alert-dialog.js",
          "cssProperties": [],
          "cssStates": []
        }
      ],
      "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"
            },
            {
              "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.",
              "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"
            },
            {
              "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"
            },
            {
              "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."
            },
            {
              "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."
            },
            {
              "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.",
              "type": {
                "text": "cancel() => void"
              }
            },
            {
              "kind": "method",
              "name": "finish",
              "description": "Sets the playback time to the end of the animation corresponding to the current playback direction.",
              "type": {
                "text": "finish() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "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"
            },
            {
              "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"
            },
            {
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-animation",
          "customElement": true,
          "modulePath": "components/animation/animation.js",
          "definitionPath": "components/animation/animation.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": []
        }
      ],
      "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": "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"
            },
            {
              "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
            },
            {
              "kind": "field",
              "name": "shape",
              "type": {
                "text": "'circle' | 'square' | 'rounded'"
              },
              "default": "'circle'",
              "description": "The shape of the avatar.",
              "attribute": "shape",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleImageLoadError",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "name": "shape",
              "type": {
                "text": "'circle' | 'square' | 'rounded'"
              },
              "default": "'circle'",
              "description": "The shape of the avatar.",
              "fieldName": "shape"
            },
            {
              "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": "Avatars are used to represent a person or object.",
          "jsDoc": "/**\n * @summary Avatars are used to represent a person or object.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/avatar\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('img')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('img')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-avatar",
          "customElement": true,
          "modulePath": "components/avatar/avatar.js",
          "definitionPath": "components/avatar/avatar.js",
          "cssStates": []
        }
      ],
      "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": "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 internal `<dialog>` element. Rendered at the viewport edge only; a `contained` drawer has `overlay` and `panel` instead.",
              "name": "dialog"
            },
            {
              "description": "The backdrop a `contained` drawer draws over its siblings. `contained` only.",
              "name": "overlay"
            },
            {
              "description": "The sliding surface of a `contained` drawer, the element the header, body and footer sit in. `contained` only.",
              "name": "panel"
            },
            {
              "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"
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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": "#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": "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": "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'end' | 'bottom' | 'start'"
              },
              "default": "'end'",
              "description": "The direction from which the drawer will open.",
              "fieldName": "placement"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('dialog')\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 dialog - The drawer's internal `<dialog>` element. Rendered at the viewport edge only; a `contained`\n *   drawer has `overlay` and `panel` instead.\n * @csspart overlay - The backdrop a `contained` drawer draws over its siblings. `contained` only.\n * @csspart panel - The sliding surface of a `contained` drawer, the element the header, body and footer sit in.\n *   `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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('dialog')",
          "dependencies": [
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-drawer",
          "customElement": true,
          "modulePath": "components/drawer/drawer.js",
          "definitionPath": "components/drawer/drawer.js",
          "cssStates": []
        }
      ],
      "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 `dialog` part, its internal `<dialog>` element.",
              "name": "drawer__dialog"
            },
            {
              "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.",
              "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": "Header to display inline above the main content. This is a good place to put things like breadcrumbs or the page title.",
              "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": "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.",
              "attribute": "view",
              "reflects": true
            },
            {
              "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
            },
            {
              "kind": "field",
              "name": "disableNavigationToggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Determines whether to hide the default hamburger button.\nThis will automatically flip to \"true\" if you add an element with `data-toggle-nav` anywhere in the element light DOM.\nGenerally this will be set for you and you don't need to do anything, unless you're using SSR, in which case you should set this manually for initial page loads.",
              "attribute": "disable-navigation-toggle",
              "reflects": true
            },
            {
              "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()."
            },
            {
              "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": "visiblePixelsInViewport",
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement | null"
                  }
                }
              ],
              "description": "https://stackoverflow.com/a/26831113",
              "type": {
                "text": "visiblePixelsInViewport(element: HTMLElement | null) => void"
              }
            },
            {
              "kind": "method",
              "name": "showNavigation",
              "description": "Shows the navigation",
              "type": {
                "text": "showNavigation() => void"
              }
            },
            {
              "kind": "method",
              "name": "hideNavigation",
              "description": "Hides the navigation",
              "type": {
                "text": "hideNavigation() => void"
              }
            },
            {
              "kind": "method",
              "name": "toggleNavigation",
              "description": "Toggles the navigation",
              "type": {
                "text": "toggleNavigation() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "view"
            },
            {
              "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"
            },
            {
              "name": "disable-navigation-toggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Determines whether to hide the default hamburger button.\nThis will automatically flip to \"true\" if you add an element with `data-toggle-nav` anywhere in the element light DOM.\nGenerally this will be set for you and you don't need to do anything, unless you're using SSR, in which case you should set this manually for initial page loads.",
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('navigation')\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.\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 - Header to display inline above the main content. This is a good place to put things like breadcrumbs or the page title.\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__dialog - The mobile navigation drawer's exported `dialog` part, its internal `<dialog>` element.\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('navigation')",
          "dependencies": [
            "ed-button",
            "ed-icon",
            "ed-drawer",
            "ed-toast-stack"
          ],
          "tagName": "ed-app",
          "customElement": true,
          "modulePath": "components/app/app.js",
          "definitionPath": "components/app/app.js",
          "cssStates": [],
          "events": []
        }
      ],
      "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/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": "'brand' | 'neutral' | 'info' | 'success' | 'danger' | 'warning' | 'new' | 'expired' | 'ai' | 'notification' | '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
            },
            {
              "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": "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "'brand' | 'neutral' | 'info' | 'success' | 'danger' | 'warning' | 'new' | 'expired' | 'ai' | 'notification' | '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"
            },
            {
              "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": "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 padding is dropped, the box becomes a circle, and the `start`, `base` and `end` parts are hidden.",
              "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 * @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\n *   padding is dropped, the box becomes a circle, and the `start`, `base` and `end` parts are hidden.\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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-badge",
          "customElement": true,
          "modulePath": "components/badge/badge.js",
          "definitionPath": "components/badge/badge.js"
        }
      ],
      "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'"
            },
            {
              "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",
              "type": {
                "text": "handleSlotChange() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "Breadcrumb Items are used inside breadcrumbs to represent different links.",
          "jsDoc": "/**\n * @summary Breadcrumb Items are used inside breadcrumbs to represent different links.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/breadcrumb-item\n * @status experimental\n * @since 1.0\n * @playwright getByRole('link' | 'button', { name: '…' })\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",
          "since": "1.0",
          "playwright": "getByRole('link' | 'button', { name: '…' })",
          "tagName": "ed-breadcrumb-item",
          "customElement": true,
          "modulePath": "components/breadcrumb-item/breadcrumb-item.js",
          "definitionPath": "components/breadcrumb-item/breadcrumb-item.js",
          "cssProperties": [],
          "cssStates": [],
          "events": []
        }
      ],
      "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
            },
            {
              "kind": "method",
              "name": "getSeparator",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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": "Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.",
          "jsDoc": "/**\n * @summary Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/breadcrumb\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('navigation')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('navigation')",
          "dependencies": [
            "ed-breadcrumb-item",
            "ed-icon"
          ],
          "tagName": "ed-breadcrumb",
          "customElement": true,
          "modulePath": "components/breadcrumb/breadcrumb.js",
          "definitionPath": "components/breadcrumb/breadcrumb.js",
          "cssProperties": [],
          "cssStates": [],
          "events": []
        }
      ],
      "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": "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
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('group')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('group')",
          "dependencies": [
            "ed-button"
          ],
          "tagName": "ed-button-group",
          "customElement": true,
          "modulePath": "components/button-group/button-group.js",
          "definitionPath": "components/button-group/button-group.js",
          "cssProperties": [],
          "cssStates": [],
          "events": []
        }
      ],
      "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": "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)"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Sets the divider's orientation.",
              "attribute": "orientation",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('separator')\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 */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/divider",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('separator')",
          "tagName": "ed-divider",
          "customElement": true,
          "modulePath": "components/divider/divider.js",
          "definitionPath": "components/divider/divider.js",
          "cssParts": [],
          "cssStates": [],
          "events": [],
          "slots": []
        }
      ],
      "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": "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 this family builds a `Date`.\n\n`new Date(y, m, d)` cannot be used for it: the constructor reads any year below 100 as 19xx, so\nyear 26 silently becomes 1926. `setFullYear` on an epoch date has no such mapping, and the floor\nis needed because that epoch date is midnight *UTC* while `setFullYear` leaves the time of day\nwhere it found it — without it the result carries the local offset as a time, 01:00 in Berlin and\n21:00 the day before in São Paulo.\n\nThe month and day are taken **unnormalized**, the way the constructor takes them: month 12 is\nJanuary of the next year, day 0 the last of the previous month, day 32 rolls forward. Every\ncalculation in the calendar leans on that — a month step is `month + 1`, a week is `day + 7`, and\nthe last day of a month is `day 0` of the next."
        },
        {
          "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": "localDate",
          "declaration": {
            "name": "localDate",
            "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"
            },
            {
              "kind": "field",
              "name": "granularity",
              "type": {
                "text": "SelectionGranularity"
              },
              "privacy": "private",
              "readonly": true,
              "default": "granularity",
              "parsedType": {
                "text": "'month' | 'quarter' | 'year' | 'halfyear' | 'day'"
              }
            },
            {
              "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."
            },
            {
              "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)."
            },
            {
              "kind": "field",
              "name": "previewTarget",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Current hover/focus preview target. Only meaningful while `anchor` is set."
            },
            {
              "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."
            },
            {
              "kind": "field",
              "name": "previewMonday",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Monday of the currently previewed week (hover / roving focus), or `null`."
            },
            {
              "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"
            },
            {
              "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": "'date' | 'month' | 'week' | 'quarter' | 'year' | '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()."
            },
            {
              "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."
            },
            {
              "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 pattern keeps `data-grid` consumers (EdTable, EdDataGrid) completely\nuntouched: the `GridFocusController` and `GridKeyboardNavController` classes are\nunchanged; only their host is a narrow facade instead of the full calendar element."
            },
            {
              "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
            },
            {
              "kind": "field",
              "name": "_max",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_defaultMonth",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "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": "'date' | 'month' | 'week' | 'quarter' | 'year' | '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.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "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."
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "'date' | 'month' | 'week' | 'quarter' | 'year' | '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": "A day-grid calendar primitive. Anatomy follows the Material Design 3 docked date picker.",
          "jsDoc": "/**\n * @summary A day-grid calendar primitive. Anatomy follows the Material Design 3 docked date picker.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/calendar\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('grid' | 'listbox')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('grid' | 'listbox')",
          "dependencies": [
            "ed-divider",
            "ed-icon"
          ],
          "tagName": "ed-calendar",
          "customElement": true,
          "modulePath": "components/calendar/calendar.js",
          "definitionPath": "components/calendar/calendar.js",
          "cssProperties": [],
          "cssStates": []
        }
      ],
      "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 amount of space around and between sections of the card. Expects a single value.",
              "name": "--ed-card-spacing",
              "default": "var(--ed-space-5)"
            }
          ],
          "cssParts": [
            {
              "description": "The container that wraps the card's media.",
              "name": "media"
            },
            {
              "description": "The container that wraps the card's header. Vertical orientation only.",
              "name": "header"
            },
            {
              "description": "The container that wraps the card's main content.",
              "name": "body"
            },
            {
              "description": "The `actions` slot of the horizontal card. Being a slot it has no box of its own, so inherited properties reach the buttons while `background` and `padding` do not.",
              "name": "actions"
            },
            {
              "description": "The container that wraps the card's footer. Vertical orientation only.",
              "name": "footer"
            }
          ],
          "slots": [
            {
              "description": "The card's main content.",
              "name": ""
            },
            {
              "description": "An optional header for the card. Vertical orientation only — a horizontal card renders no header, and content placed here is not displayed.",
              "name": "header"
            },
            {
              "description": "An optional footer for the card. Vertical orientation only — a horizontal card renders no footer, and content placed here is not displayed.",
              "name": "footer"
            },
            {
              "description": "An optional media section to render at the start of the card.",
              "name": "media"
            },
            {
              "description": "An optional actions section to render at the end for the horizontal card.",
              "name": "actions"
            },
            {
              "description": "An optional actions section to render in the header of the vertical card.",
              "name": "header-actions"
            },
            {
              "description": "An optional actions section to render in the footer of the vertical card.",
              "name": "footer-actions"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController( this, 'footer', 'header', 'media', 'header-actions', 'footer-actions', 'actions' )"
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'filled' | 'filled-outlined' | 'outlined' | 'plain'"
              },
              "default": "'outlined'",
              "description": "The card's visual appearance.",
              "attribute": "appearance",
              "reflects": true
            },
            {
              "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": "withMedia",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `media` element so the server-rendered markup\nincludes the media before the component hydrates on the client.",
              "attribute": "with-media",
              "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": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "Renders the card's orientation *",
              "attribute": "orientation",
              "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 `actions` / `header-actions` / `footer-actions` 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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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-media",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `media` element so the server-rendered markup\nincludes the media before the component hydrates on the client.",
              "fieldName": "withMedia"
            },
            {
              "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": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "Renders the card's orientation *",
              "fieldName": "orientation"
            },
            {
              "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 `actions` / `header-actions` / `footer-actions` 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": "Cards can be used to group related subjects in a container.",
          "jsDoc": "/**\n * @summary Cards can be used to group related subjects in a container.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/card\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The card's main content.\n * @slot header - An optional header for the card. Vertical orientation only — a horizontal card\n *   renders no header, and content placed here is not displayed.\n * @slot footer - An optional footer for the card. Vertical orientation only — a horizontal card\n *   renders no footer, and content placed here is not displayed.\n * @slot media - An optional media section to render at the start of the card.\n * @slot actions - An optional actions section to render at the end for the horizontal card.\n * @slot header-actions - An optional actions section to render in the header of the vertical card.\n * @slot footer-actions - An optional actions section to render in the footer of the vertical card.\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 media - The container that wraps the card's media.\n * @csspart header - The container that wraps the card's header. Vertical orientation only.\n * @csspart body - The container that wraps the card's main content.\n * @csspart actions - The `actions` slot of the horizontal card. Being a slot it has no box of its own, so inherited\n *   properties reach the buttons while `background` and `padding` do not.\n * @csspart footer - The container that wraps the card's footer. Vertical orientation only.\n *\n * @cssproperty [--ed-card-spacing=var(--ed-space-5)] - The amount of space around and between sections of the card. Expects a single value.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/card",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-card",
          "customElement": true,
          "modulePath": "components/card/card.js",
          "definitionPath": "components/card/card.js",
          "cssStates": []
        }
      ],
      "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
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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.",
              "type": {
                "text": "previous(behavior: ScrollBehavior = 'smooth') => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "next(behavior: ScrollBehavior = 'smooth') => void"
              }
            },
            {
              "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`.",
              "type": {
                "text": "goToSlide(index: number, behavior: ScrollBehavior = 'smooth') => void"
              }
            },
            {
              "kind": "method",
              "name": "scrollToSlide",
              "privacy": "private",
              "parameters": [
                {
                  "name": "slide",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "behavior",
                  "default": "'smooth'",
                  "type": {
                    "text": "ScrollBehavior"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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('…').getByRole('region')\n * @status experimental\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('…').getByRole('region')",
          "status": "experimental",
          "dependencies": [
            "ed-icon",
            "ed-button"
          ],
          "tagName": "ed-carousel",
          "customElement": true,
          "modulePath": "components/carousel/carousel.js",
          "definitionPath": "components/carousel/carousel.js",
          "cssStates": []
        }
      ],
      "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": "components/checkbox-group/checkbox-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCheckboxGroup",
          "cssParts": [
            {
              "description": "The fieldset that wraps the label, group, and hint.",
              "name": "form-control"
            },
            {
              "description": "The label's wrapper.",
              "name": "form-control-label"
            },
            {
              "description": "The element that wraps the grouped checkboxes, exposed as a `role=\"group\"`.",
              "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 `role=\"group\"`\nnode, where the role lives — the host is deliberately role-less, so a consumer's aria-label\nwould otherwise sit on an element assistive technology ignores.\n\nSet alongside `aria-labelledby` rather than instead of it: accessible-name computation consults\naria-labelledby first, so a visible label keeps winning without either side having to know.",
              "attribute": "aria-label",
              "reflects": true
            },
            {
              "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
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 `role=\"group\"`\nnode, where the role lives — the host is deliberately role-less, so a consumer's aria-label\nwould otherwise sit on an element assistive technology ignores.\n\nSet alongside `aria-labelledby` rather than instead of it: accessible-name computation consults\naria-labelledby first, so a visible label keeps winning without either side having to know.",
              "fieldName": "ariaLabel"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('group')\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, group, and hint.\n * @csspart form-control-label - The label's wrapper.\n * @csspart base - The element that wraps the grouped checkboxes, exposed as a `role=\"group\"`.\n * @csspart hint - The hint's wrapper.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/checkbox-group",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('group')",
          "dependencies": [
            "ed-checkbox"
          ],
          "tagName": "ed-checkbox-group",
          "customElement": true,
          "modulePath": "components/checkbox-group/checkbox-group.js",
          "definitionPath": "components/checkbox-group/checkbox-group.js",
          "cssProperties": [],
          "cssStates": [],
          "events": []
        }
      ],
      "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": "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 listbox container where options are slotted.",
              "name": "listbox"
            },
            {
              "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"
            },
            {
              "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,
              "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": "name",
              "type": {
                "text": "string | null"
              },
              "default": "''",
              "description": "The name of the select, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "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"
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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": "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",
              "type": {
                "text": "handleDefaultSlotChange() => void"
              }
            },
            {
              "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",
              "type": {
                "text": "selectionChanged() => void"
              }
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the listbox.",
              "type": {
                "text": "show() => void"
              }
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the listbox.",
              "type": {
                "text": "hide() => void"
              }
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the control.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the control.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "type": {
                "text": "formResetCallback() => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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'",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "name",
              "type": {
                "text": "string | null"
              },
              "default": "''",
              "description": "The name of the select, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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 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": "Selects allow you to choose items from a menu of predefined options.",
          "jsDoc": "/**\n * @summary Selects allow you to choose items from a menu of predefined options.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/select\n * @status experimental\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 listbox - The listbox container where options are slotted.\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('combobox')",
          "dependencies": [
            "ed-icon",
            "ed-popup",
            "ed-badge",
            "ed-option"
          ],
          "tagName": "ed-select",
          "customElement": true,
          "modulePath": "components/select/select.js",
          "definitionPath": "components/select/select.js"
        }
      ],
      "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": "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"
            },
            {
              "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.",
              "type": {
                "text": "getChildOptions() => EdOption[]"
              }
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "Options define the selectable items within a select or combobox component.",
          "jsDoc": "/**\n * @summary Options define the selectable items within a select or combobox component.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/option\n * @status experimental\n * @since 1.0\n * @playwright getByRole('option' | 'treeitem', { name: '…' })\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",
          "since": "1.0",
          "playwright": "getByRole('option' | 'treeitem', { name: '…' })",
          "dependencies": [
            "ed-checkbox",
            "ed-icon"
          ],
          "tagName": "ed-option",
          "customElement": true,
          "modulePath": "components/option/option.js",
          "definitionPath": "components/option/option.js",
          "cssProperties": [],
          "events": []
        }
      ],
      "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 popup panel holding the listbox and the no-match message.",
              "name": "panel"
            },
            {
              "description": "The listbox container where options are slotted.",
              "name": "listbox"
            },
            {
              "description": "The same container, aliased when `tree` is set and it carries role=\"tree\".",
              "name": "tree"
            },
            {
              "description": "The message shown when nothing matches.",
              "name": "no-option-label"
            },
            {
              "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-option-label attribute for plain text.",
              "name": "no-option-label"
            },
            {
              "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": "selectionOrder",
              "type": {
                "text": "Map<string, number>"
              },
              "privacy": "private",
              "default": "new Map()"
            },
            {
              "kind": "field",
              "name": "cachedOptions",
              "type": {
                "text": "EdOption[] | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "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."
            },
            {
              "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": "liveRegion",
              "type": {
                "text": "HTMLDivElement"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Where to anchor native constraint validation",
              "readonly": true,
              "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"
            },
            {
              "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"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "''",
              "description": "The name of the select, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string[] | undefined | null"
              },
              "privacy": "private"
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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": "noOptionLabel",
              "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-option-label` slot.",
              "attribute": "no-option-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": "'both' | 'none'"
              },
              "default": "'both'",
              "description": "The autocomplete behavior of the combobox.\n- `both` (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
            },
            {
              "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)."
            },
            {
              "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": "method",
              "name": "handleComboboxMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ],
              "type": {
                "text": "handleBlur(event: FocusEvent) => void"
              }
            },
            {
              "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",
              "type": {
                "text": "handleFocus() => void"
              }
            },
            {
              "kind": "method",
              "name": "handleDefaultSlotChange",
              "privacy": "public",
              "type": {
                "text": "handleDefaultSlotChange() => void"
              }
            },
            {
              "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": "getVisibleOptions",
              "type": {
                "text": "getVisibleOptions() => void"
              }
            },
            {
              "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": "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",
              "type": {
                "text": "getFirstVisibleOption() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateFilteredOptions",
              "type": {
                "text": "updateFilteredOptions() => void"
              }
            },
            {
              "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": "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",
              "type": {
                "text": "selectionChanged() => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "show() => void"
              }
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the listbox.",
              "type": {
                "text": "hide() => void"
              }
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the control.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the control.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "type": {
                "text": "formResetCallback() => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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'",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "name",
              "type": {
                "text": "string | null"
              },
              "default": "''",
              "description": "The name of the select, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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-option-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-option-label` slot.",
              "fieldName": "noOptionLabel"
            },
            {
              "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": "'both' | 'none'"
              },
              "default": "'both'",
              "description": "The autocomplete behavior of the combobox.\n- `both` (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"
            },
            {
              "name": "inputValue",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current text value in the input field.",
              "fieldName": "inputValue"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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 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": "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('combobox')\n *\n * @dependency ed-button\n * @dependency ed-icon\n * @dependency ed-option\n * @dependency ed-popup\n * @dependency ed-progress-ring\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-option-label - 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-option-label attribute for plain text.\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 *\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 popup panel holding the listbox and the no-match message.\n * @csspart listbox - The listbox container where options are slotted.\n * @csspart tree - The same container, aliased when `tree` is set and it carries role=\"tree\".\n * @csspart no-option-label - The message shown when nothing matches.\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 */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/combobox",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('combobox')",
          "dependencies": [
            "ed-button",
            "ed-icon",
            "ed-option",
            "ed-popup",
            "ed-progress-ring",
            "ed-badge"
          ],
          "tagName": "ed-combobox",
          "customElement": true,
          "modulePath": "components/combobox/combobox.js",
          "definitionPath": "components/combobox/combobox.js"
        }
      ],
      "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>` element.",
              "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'"
            },
            {
              "kind": "field",
              "name": "liveAnnouncement",
              "type": {
                "text": "string"
              },
              "default": "''"
            },
            {
              "kind": "field",
              "name": "customTriggerEl",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "lightTooltip",
              "type": {
                "text": "EdTooltip | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "feedbackTimeout",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "activeTooltip",
              "type": {
                "text": "EdTooltip | null"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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 * @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>` element.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/copy-button",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('button')",
          "dependencies": [
            "ed-icon",
            "ed-tooltip"
          ],
          "tagName": "ed-copy-button",
          "customElement": true,
          "modulePath": "components/copy-button/copy-button.js",
          "definitionPath": "components/copy-button/copy-button.js",
          "cssProperties": []
        }
      ],
      "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/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
            },
            {
              "kind": "field",
              "name": "alignment",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "Defines the alignment of the empty state.",
              "attribute": "alignment",
              "reflects": true
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "name": "alignment",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "Defines the alignment of the empty state.",
              "fieldName": "alignment"
            },
            {
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-empty-state",
          "customElement": true,
          "modulePath": "components/empty-state/empty-state.js",
          "definitionPath": "components/empty-state/empty-state.js",
          "cssStates": [],
          "events": []
        }
      ],
      "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/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"
              },
              "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
            },
            {
              "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
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the input.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "kind": "method",
              "name": "select",
              "description": "Selects all the text in the input.",
              "type": {
                "text": "select() => void"
              }
            },
            {
              "kind": "method",
              "name": "stepUp",
              "description": "Increments the value by the step amount.",
              "type": {
                "text": "stepUp() => void"
              }
            },
            {
              "kind": "method",
              "name": "stepDown",
              "description": "Decrements the value by the step amount.",
              "type": {
                "text": "stepDown() => void"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "type": {
                "text": "formResetCallback() => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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,
              "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'",
              "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "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"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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",
              "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 optional stepper buttons.",
          "jsDoc": "/**\n * @summary Number inputs allow users to enter and edit numeric values with optional stepper buttons.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/number-input\n * @status experimental\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('spinbutton')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-number-input",
          "customElement": true,
          "modulePath": "components/number-input/number-input.js",
          "definitionPath": "components/number-input/number-input.js"
        }
      ],
      "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.",
              "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.",
              "attribute": "total-items"
            },
            {
              "kind": "field",
              "name": "page",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The current page (1-indexed).",
              "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.",
              "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.",
              "type": {
                "text": "setPageSize(size: number | string) => void"
              }
            },
            {
              "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",
              "type": {
                "text": "setPage(page: number | string) => void"
              }
            },
            {
              "kind": "method",
              "name": "handlePageInputChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 on its own.",
              "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.",
              "fieldName": "totalItems"
            },
            {
              "name": "page",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The current page (1-indexed).",
              "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 * @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 current page changes on its own.\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.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/pagination",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon",
            "ed-number-input",
            "ed-option",
            "ed-select"
          ],
          "tagName": "ed-pagination",
          "customElement": true,
          "modulePath": "components/pagination/pagination.js",
          "definitionPath": "components/pagination/pagination.js",
          "cssProperties": [],
          "cssStates": [],
          "slots": []
        }
      ],
      "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/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-neutral-240)"
            },
            {
              "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.",
              "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
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "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"
            },
            {
              "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 * @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-neutral-240)] - 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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('progressbar')",
          "tagName": "ed-progress-bar",
          "customElement": true,
          "modulePath": "components/progress-bar/progress-bar.js",
          "definitionPath": "components/progress-bar/progress-bar.js",
          "cssStates": [],
          "events": []
        }
      ],
      "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/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
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-skeleton",
          "customElement": true,
          "modulePath": "components/skeleton/skeleton.js",
          "definitionPath": "components/skeleton/skeleton.js",
          "cssStates": [],
          "events": [],
          "slots": []
        }
      ],
      "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/data-grid/data-grid.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGrid",
          "cssProperties": [
            {
              "description": "Overwrites the density attribute for manual row height adjustment.",
              "name": "--ed-data-grid-row-height",
              "default": "var(--ed-size-8)"
            },
            {
              "description": "Length of the shadow that fades in from each pinned-region edge onto the scrolling content when content is hidden behind that region.",
              "name": "--ed-data-grid-pin-shadow-size",
              "default": "var(--ed-space-1)"
            },
            {
              "description": "Color of the pinned-region scroll shadow.",
              "name": "--ed-data-grid-pin-shadow-color",
              "default": "var(--ed-color-shadow)"
            }
          ],
          "cssParts": [
            {
              "description": "Wrapper element around the loading visual (built-in or slotted).",
              "name": "loading-overlay"
            },
            {
              "description": "Each skeleton row in `loading-mode=\"skeleton\"`.",
              "name": "loading-row"
            },
            {
              "description": "Each skeleton cell in `loading-mode=\"skeleton\"`.",
              "name": "loading-cell"
            },
            {
              "description": "Visually hidden polite live region announcing loading, sort, selection, and pagination status changes.",
              "name": "status"
            }
          ],
          "slots": [
            {
              "description": "Content to display when the grid has no data rows.",
              "name": "empty"
            },
            {
              "description": "Custom loading overlay content. When assigned, suppresses the default skeleton or progress-bar visual. Framework still owns `aria-busy`, the `inert` lock-out, and the live-region announcement. Note: the slot's projection point is inside an `inert` subtree while loading is true, so focusable controls in the slot are not tab-reachable. Place interactive controls (e.g. a \"Cancel\" button) outside `<ed-data-grid>` instead.",
              "name": "loading"
            },
            {
              "description": "Replaces the default counts area in the footer. Pagination (when `pagination` + `pagination-mode=\"controls\"`) still renders at the inline-end; the totals row (when any leaf column has `footerAggregate` or `renderFooterAggregate`) still renders above. The `hide-entry-count` and `hide-selection-count` attributes are inert while this slot has assigned content.",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "columns",
              "type": {
                "text": "EdDataGridColumn[]"
              },
              "default": "[]",
              "description": "Column definitions. Supports nested `children` for multi-row headers."
            },
            {
              "kind": "field",
              "name": "data",
              "type": {
                "text": "EdDataGridRow[]"
              },
              "default": "[]",
              "description": "Row data array. Each object should contain keys matching column `key` values."
            },
            {
              "kind": "field",
              "name": "rowKey",
              "type": {
                "text": "string"
              },
              "default": "'id'",
              "description": "Property key used to uniquely identify rows.",
              "attribute": "row-key"
            },
            {
              "kind": "field",
              "name": "sortable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables sortable columns.",
              "attribute": "sortable"
            },
            {
              "kind": "field",
              "name": "sortMode",
              "type": {
                "text": "'single' | 'multi'"
              },
              "default": "'single'",
              "description": "Sort mode. `'single'` allows one sorted column; `'multi'` allows Shift+click multi-sort.",
              "attribute": "sort-mode"
            },
            {
              "kind": "field",
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables row selection.",
              "attribute": "selectable"
            },
            {
              "kind": "field",
              "name": "selectionMode",
              "type": {
                "text": "'single' | 'multi'"
              },
              "default": "'single'",
              "description": "Selection mode. `'single'` allows one selected row; `'multi'` allows range/toggle selection.",
              "attribute": "selection-mode"
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls row density (padding and height).",
              "attribute": "density"
            },
            {
              "kind": "field",
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes all columns resizable via drag handle.",
              "attribute": "resizable"
            },
            {
              "kind": "field",
              "name": "columnReorderable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables column reordering via drag-and-drop on header cells.",
              "attribute": "column-reorderable"
            },
            {
              "kind": "field",
              "name": "rowReorderable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables row reordering via drag-and-drop handle and the keyboard grab pattern.\n\nLocks itself while a sort, `groupBy` or hierarchical data re-orders the rows, since a move\nwould then rewrite `data` invisibly. A filter applied before `data` is passed in is not\nvisible to the grid — switch this off yourself in that case.",
              "attribute": "row-reorderable"
            },
            {
              "kind": "field",
              "name": "pinControls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Pins the generated leading columns (row-drag handle and multi-select checkbox) to the start.\nAuto-enabled whenever any user column has `pin: 'start'`.",
              "attribute": "pin-controls"
            },
            {
              "kind": "field",
              "name": "groupBy",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Groups flat data by column value(s). Comma-separated for nested grouping.",
              "attribute": "group-by"
            },
            {
              "kind": "field",
              "name": "pagination",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables pagination.",
              "attribute": "pagination"
            },
            {
              "kind": "field",
              "name": "paginationMode",
              "type": {
                "text": "'controls' | 'infinite'"
              },
              "default": "'controls'",
              "description": "Pagination mode. `'controls'` shows page controls; `'infinite'` loads more on scroll.",
              "attribute": "pagination-mode"
            },
            {
              "kind": "field",
              "name": "totalRows",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Total number of rows (for server-side pagination). When set, uses this instead of `.data.length`.",
              "attribute": "total-rows"
            },
            {
              "kind": "field",
              "name": "currentPage",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Current page (1-based).",
              "attribute": "current-page"
            },
            {
              "kind": "field",
              "name": "pageSize",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "Number of rows per page.",
              "attribute": "page-size"
            },
            {
              "kind": "field",
              "name": "pageSizeOptions",
              "type": {
                "text": "number[]"
              },
              "default": "[50, 200, 500, 1000]",
              "description": "Available page size options for the pagination dropdown.",
              "attribute": "page-size-options"
            },
            {
              "kind": "field",
              "name": "hideEntryCount",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the entry count piece in the footer counts area. Inert when the `footer` slot is used.",
              "attribute": "hide-entry-count"
            },
            {
              "kind": "field",
              "name": "hideSelectionCount",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the selection count piece in the footer counts area. The selection count is also\nauto-hidden when no rows are selected, so this attribute matters only when ≥ 1 row is selected.\nInert when the `footer` slot is used.",
              "attribute": "hide-selection-count"
            },
            {
              "kind": "field",
              "name": "virtualScroll",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables virtual scrolling for large datasets.",
              "attribute": "virtual-scroll"
            },
            {
              "kind": "field",
              "name": "rowHeight",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Explicit row height in pixels. If 0, measured from first rendered row.",
              "attribute": "row-height"
            },
            {
              "kind": "field",
              "name": "scrollBuffer",
              "type": {
                "text": "number"
              },
              "default": "5",
              "description": "Number of buffer rows rendered above and below the visible viewport.",
              "attribute": "scroll-buffer"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a loading indicator over the grid body.",
              "attribute": "loading"
            },
            {
              "kind": "field",
              "name": "loadingMode",
              "type": {
                "text": "'skeleton' | 'progress-bar'"
              },
              "default": "'skeleton'",
              "description": "Loading appearance.\n`'skeleton'` renders placeholder rows replacing the body content (default).\n`'progress-bar'` renders an indeterminate `<ed-progress-bar>` sticky at the top of the body\nwhile existing rows remain visible (but locked-out via `inert`).",
              "attribute": "loading-mode"
            },
            {
              "kind": "field",
              "name": "loadingRows",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Number of skeleton rows in `loading-mode=\"skeleton\"`.\n`0` (default) derives the count from the viewport height; falls back to 5 when no row height is measurable.",
              "attribute": "loading-rows"
            },
            {
              "kind": "field",
              "name": "srAnnouncement",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "Polite live-region text for status announcements (loading, sort, selection, pagination)."
            },
            {
              "kind": "field",
              "name": "grabbedRowKey",
              "type": {
                "text": "unknown"
              },
              "privacy": "private",
              "default": "null",
              "description": "Row key of the row currently lifted for keyboard reordering (grab pattern), or null."
            },
            {
              "kind": "field",
              "name": "grabOriginIndex",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "-1",
              "description": "`this.data` index the grabbed row had when lifted; Escape rolls back to it."
            },
            {
              "kind": "field",
              "name": "hasLoadingSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'loading')"
            },
            {
              "kind": "field",
              "name": "hasFooterSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'footer')"
            },
            {
              "kind": "field",
              "name": "focusController",
              "privacy": "private",
              "default": "new GridFocusController(this)"
            },
            {
              "kind": "field",
              "name": "keyboardNavController",
              "privacy": "private",
              "default": "new GridKeyboardNavController(this, { focus: this.focusController, onHeaderActivate: (cell, event) => { if (this.loading) return; const columnKey = cell.dataset.columnKey; if (!columnKey) return; const col = this.getLeafColumns().find(c => c.key === columnKey); if (!col) return; if (this.isColumnSortable(col)) { this.sortController.toggleSort(columnKey, event.shiftKey); } }, onBodyActivate: (cell, event) => { if (this.loading) return; const row = cell.closest<HTMLElement>('[role=\"row\"]'); if (!row) return; // Absolute flat-row index, not the window-relative DOM position — the two // diverge under virtual scroll and the selection controller expects absolute. const rowIndex = this.getRowDataIndex(row); if (rowIndex !== -1 && this.selectable) { this.selectionController.toggleRow(rowIndex, event); // Range selection changes many rows at once — announce the total. if (event.shiftKey) this.announce(this.localize.term('numRowsSelected', this.getSelectedCount())); } }, onSelectAll: () => { if (this.loading) return; this.selectAll(); }, // Virtual-scroll navigation: let the keyboard controller reach rows outside the // rendered window. Absolute index space is the flat render list (getRenderRows), // the same one selection uses. getBodyRowIndex: (row: HTMLElement) => this.getRowDataIndex(row), getBodyRowCount: () => this.getRenderRows().length, scrollBodyRowIntoView: (index: number) => this.scrollBodyRowIntoView(index), // One keyboard \"page\" = the rows that fit the viewport (same math as the // skeleton row count). getPageRowCount: () => this.computeViewportLoadingRows(), // Expandable rows carry their toggle id (group rows: raw group key; tree rows: // 'bodyrow-' prefixed); toggleRow resolves both forms. onTreeToggle: (row: HTMLElement) => { if (this.loading) return; this.toggleRow(row.id); } })"
            },
            {
              "kind": "field",
              "name": "sortController",
              "privacy": "private",
              "default": "new GridSortController(this, { onSort: (sorts: SortEntry[], added?: SortEntry) => { const event = new EdSortEvent({ sorts, added }); const notPrevented = this.dispatchEvent(event); if (!notPrevented) return false; if (added && added.ordering !== 'none') { const col = this.getLeafColumns().find(c => c.key === added.column); if (col) { this.announce( this.localize.term('sortedByColumn', col.label, added.ordering === 'asc' ? 'ascending' : 'descending') ); } } else { this.announce(this.localize.term('sortingCleared')); } // Internal state is updated by the controller; just request re-render return undefined; } })"
            },
            {
              "kind": "field",
              "name": "selectionController",
              "privacy": "private",
              "default": "new GridSelectionController(this, { // Absolute index into the full flat render list — resolves regardless of the // virtual-scroll window. Group-header rows carry their synthetic key; they are // filtered out of the range/all-keys helpers below and match no data row. getRowKey: (index: number) => { const fr = this.getRenderRows()[index]; return fr ? fr.row[this.rowKey] : undefined; }, getAllRowKeys: () => this.getRenderRows() .filter(fr => !fr.isGroupRow) .map(fr => fr.row[this.rowKey]), getRowKeysInRange: (start: number, end: number) => this.getRenderRows() .slice(start, end + 1) .filter(fr => !fr.isGroupRow) .map(fr => fr.row[this.rowKey]), onSelectionChange: (selectedKeys: Set<unknown>) => { const selectedData = this.data.filter(row => selectedKeys.has(row[this.rowKey])); this.dispatchEvent( new EdSelectionChangeEvent({ data: selectedData, selectedKeys }) ); } })"
            },
            {
              "kind": "field",
              "name": "resizeController",
              "privacy": "private",
              "default": "new GridResizeController(this, { getColumnKey: (cell: HTMLElement) => { return cell.dataset.columnKey ?? ''; }, onResize: (columnKey: string, width: number) => { this.dispatchEvent(new EdColumnResizeEvent({ column: columnKey, width })); } })"
            },
            {
              "kind": "field",
              "name": "columnWidths",
              "type": {
                "text": "number[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "Tracked column widths in pixels. Initialized on first resize from computed widths."
            },
            {
              "kind": "field",
              "name": "vsStart",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "vsEnd",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "renderRowCount",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "Length of the flat render list, stashed in willUpdate for the scroll-tick hot path."
            },
            {
              "kind": "field",
              "name": "measuredRowHeight",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "viewportHeight",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "vsScrollRaf",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "vsResizeObserver",
              "type": {
                "text": "ResizeObserver | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "infiniteScrollLoading",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "infiniteScrollObserver",
              "type": {
                "text": "IntersectionObserver | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "expandedGroupKeys",
              "privacy": "private",
              "default": "new Set<unknown>()",
              "description": "Tracks which auto-grouped rows are currently expanded (collapsed by default)."
            },
            {
              "kind": "field",
              "name": "expandedKeys",
              "privacy": "private",
              "default": "new Set<unknown>()",
              "description": "Tracks which tree rows are expanded (collapsed by default)."
            },
            {
              "kind": "field",
              "name": "loadingKeys",
              "privacy": "private",
              "default": "new Set<unknown>()",
              "description": "Tracks which lazy rows are currently loading."
            },
            {
              "kind": "field",
              "name": "dragColumnIndex",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "-1"
            },
            {
              "kind": "field",
              "name": "internalColumnOrder",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "User-driven leaf column order, captured on every drop. Empty until the\nfirst reorder. Applied in getLeafColumns on top of `groupBy`\nfront-ordering; within each pin band (start / unpinned / end) the order\nhere wins over the declared order. Pruned of stale keys when `columns`\nchanges."
            },
            {
              "kind": "field",
              "name": "isScrolling",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "scrollEndTimer",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "method",
              "name": "getRowDataIndex",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "The absolute flat-row index for a rendered body row, read from the\n`data-row-index` stamp. Under virtual scroll this differs from the row's\nposition within `getBodyRows()` (which only covers the rendered window).\nReturns -1 for rows without the stamp (e.g. header rows)."
            },
            {
              "kind": "method",
              "name": "getLeafColumns",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridColumn[]"
                }
              },
              "description": "Flattens the column tree to leaf columns only (columns without children)."
            },
            {
              "kind": "method",
              "name": "getColumnBand",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'pin-start' | 'unpinned' | 'pin-end'"
                }
              },
              "parameters": [
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn | undefined"
                  }
                }
              ],
              "description": "The \"pin band\" a leaf column belongs to. Reordering is allowed inside a\nband but blocked across bands — otherwise a pin-start column could end up\nto the right of an unpinned one (or worse, in the middle of pin-end), which\nmakes the sticky positioning render nonsense."
            },
            {
              "kind": "method",
              "name": "applyInternalColumnOrder",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridColumn[]"
                }
              },
              "parameters": [
                {
                  "name": "cols",
                  "type": {
                    "text": "EdDataGridColumn[]"
                  }
                }
              ],
              "description": "Reorders the top-level column array by `internalColumnOrder`. Grouped\ncolumns keep their forced front positions. Stale keys (no longer in\n`columns`) are ignored; columns not yet in the order are appended in\ntheir declared position. Skipped entirely for multi-header trees — a\ntop-level header with `children` stays where it was declared, since\nleaf-level reordering across parent-header boundaries would tear the\nspan layout."
            },
            {
              "kind": "field",
              "name": "shouldPinLeading",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the generated leading columns (drag-handle, checkbox) should be sticky-pinned\nto the start. Triggered by `pin-controls` or by any non-hidden user column with `pin: 'start'`.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "computePinStyles",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{\n    styles: Map<number, string>;\n    lastStartPinLeafIdx: number;\n    firstEndPinLeafIdx: number;\n    leadingEdge: 'drag' | 'checkbox' | null;\n  }"
                }
              },
              "description": "Computes pinning offsets for each leaf column and identifies the cells at\nthe inside edge of each pin band — used to paint the divider/shadow affordance.\n\n`leadingEdge` is set when the start-pin band ends on an injected utility\ncell (drag handle or checkbox) rather than on a user-pinned column — i.e.\n`shouldPinLeading` is on and no user column has `pin: 'start'`."
            },
            {
              "kind": "method",
              "name": "parseColumnWidth",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "width",
                  "optional": true,
                  "type": {
                    "text": "string | number"
                  }
                }
              ],
              "description": "Parses a CSS column width value to a pixel number estimate. Returns 0 for auto/unknown."
            },
            {
              "kind": "method",
              "name": "buildGridTemplateColumns",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "description": "Generates the CSS `grid-template-columns` value from leaf column widths."
            },
            {
              "kind": "method",
              "name": "renderGhostCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              },
              "description": "Renders the trailing ghost cell that fills the leftover-space track in each row."
            },
            {
              "kind": "method",
              "name": "parseNumToCss",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "parameters": [
                {
                  "name": "width",
                  "optional": true,
                  "type": {
                    "text": "string | number"
                  }
                }
              ],
              "description": "Parses column width value to a CSS column width. *"
            },
            {
              "kind": "method",
              "name": "buildHeaderRows",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HeaderCellData[][]"
                }
              },
              "description": "Builds the multi-row header layout from the column tree.\nReturns an array of arrays, where each inner array represents a header row's cells."
            },
            {
              "kind": "method",
              "name": "getMaxDepth",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "columns",
                  "type": {
                    "text": "EdDataGridColumn[]"
                  }
                }
              ],
              "description": "Returns the maximum nesting depth of the column tree."
            },
            {
              "kind": "method",
              "name": "getLeafCount",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                }
              ],
              "description": "Returns the number of leaf columns under a given column."
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "method",
              "name": "renderCellContent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "unknown"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                },
                {
                  "name": "row",
                  "type": {
                    "text": "EdDataGridRow"
                  }
                }
              ],
              "description": "Resolves cell content through the rendering pipeline: render() → format() → built-in → String()."
            },
            {
              "kind": "method",
              "name": "renderAggregateCellContent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "unknown"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                },
                {
                  "name": "group",
                  "type": {
                    "text": "EdDataGridRow"
                  }
                }
              ],
              "description": "Resolves aggregate-cell content through the rendering pipeline:\n`renderAggregate()` → `format()` → built-in type formatter (preset only) → `String()`.\n\nCustom `aggregate` functions and the `count` preset bypass the built-in\ntype formatter — their return value renders as-is unless `format` is set."
            },
            {
              "kind": "method",
              "name": "renderFooterAggregateCellContent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "unknown"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                },
                {
                  "name": "rows",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                }
              ],
              "description": "Resolves footer totals-row cell content through the same pipeline as\n`renderAggregateCellContent`, but using `renderFooterAggregate` + `footerAggregate`.\n`rows` is the entire dataset (sorted), not a group's children."
            },
            {
              "kind": "field",
              "name": "warnedFormatColumns",
              "privacy": "private",
              "default": "new Set<string>()",
              "description": "Columns already warned about a failing built-in formatter (avoid per-cell log spam)."
            },
            {
              "kind": "field",
              "name": "warnedCallbackColumns",
              "privacy": "private",
              "default": "new Set<string>()",
              "description": "Column callbacks already warned about, keyed `column:hook` (avoid per-cell log spam)."
            },
            {
              "kind": "method",
              "name": "runColumnCallback",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "T"
                }
              },
              "parameters": [
                {
                  "name": "hook",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                },
                {
                  "name": "run",
                  "type": {
                    "text": "() => T"
                  }
                },
                {
                  "name": "fallback",
                  "type": {
                    "text": "() => T"
                  }
                }
              ],
              "description": "Runs a consumer-supplied column callback so a throwing one cannot take the grid down.\n\n`render`, `format`, `aggregate` and their footer siblings are arbitrary consumer code executing\ninside Lit's render pass, where an exception escapes the whole update and leaves the grid blank.\nOne bad row out of thousands should cost that one cell, not the table — the same reasoning\nformatValueBuiltin applies to its `Intl` calls, for a strictly lower-risk callee.\n\n`fallback` produces what the cell would have shown without the callback."
            },
            {
              "kind": "method",
              "name": "formatValueBuiltin",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult | string | typeof nothing"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "unknown"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                }
              ],
              "description": "Built-in formatter based on column type."
            },
            {
              "kind": "method",
              "name": "isColumnSortable",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                }
              ],
              "description": "Returns whether a column is sortable based on column or grid-level setting."
            },
            {
              "kind": "method",
              "name": "getSortedData",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridRow[]"
                }
              },
              "description": "Returns a sorted copy of data based on the current sort stack."
            },
            {
              "kind": "field",
              "name": "warnedCollatorLang",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether a malformed `lang` has already been reported (one warning per grid, not per sort)."
            },
            {
              "kind": "method",
              "name": "createCollator",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Intl.Collator"
                }
              },
              "description": "Collator for the default (text) sort.\n\nBuilt once per sort rather than per comparison: `localeCompare` would construct a collator on\nevery one of the n log n comparisons, and MDN points at `Intl.Collator` for exactly this case.\nIt is also passed the grid's resolved language, which `localeCompare` without arguments ignores\nin favor of the host locale — that made a German grid collate umlauts by the browser's UI\nlanguage while every formatter in this file already followed `lang`.\n\n`lang` is consumer input and a malformed tag makes the constructor throw, which here would take\nthe grid down mid-sort, so it falls back to the host locale."
            },
            {
              "kind": "method",
              "name": "compareValues",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "a",
                  "type": {
                    "text": "unknown"
                  }
                },
                {
                  "name": "b",
                  "type": {
                    "text": "unknown"
                  }
                },
                {
                  "name": "type",
                  "type": {
                    "text": "string | undefined"
                  }
                },
                {
                  "name": "collator",
                  "type": {
                    "text": "Intl.Collator"
                  }
                }
              ],
              "description": "Compares two values for sorting based on column type."
            },
            {
              "kind": "method",
              "name": "durationToSeconds",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "iso",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Converts an ISO 8601 duration to total seconds for sorting."
            },
            {
              "kind": "method",
              "name": "handleHeaderSortClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HeaderCellData"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ],
              "description": "Handles a sort click on a header cell."
            },
            {
              "kind": "method",
              "name": "formatDurationFallback",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "parts",
                  "type": {
                    "text": "Record<string, number>"
                  }
                }
              ],
              "description": "Renders the parsed duration parts using an English-ish short style when\n`Intl.DurationFormat` isn't available (Firefox ESR doesn't ship it yet).\nOnly the non-zero parts are emitted, matching the spirit of `style: 'short'`."
            },
            {
              "kind": "method",
              "name": "parseISODuration",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Record<string, number>"
                }
              },
              "parameters": [
                {
                  "name": "iso",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Parses an ISO 8601 duration string into an Intl.DurationFormat-compatible object."
            },
            {
              "kind": "method",
              "name": "handleRowClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "rowIdx",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ],
              "description": "Handles click on a body row to toggle selection."
            },
            {
              "kind": "method",
              "name": "getSelectableKeys",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown[]"
                }
              },
              "parameters": [
                {
                  "name": "rows",
                  "default": "this.getRenderRows()",
                  "type": {
                    "text": "FlatRow[]"
                  }
                }
              ],
              "description": "The row keys \"select all\" covers — what `getAllRowKeys()` reports the controller: the current\npage under `pagination-mode=\"controls\"`, everything loaded under infinite scroll, and the whole\ndataset otherwise. Notably not the rendered window: under virtual scroll that is only the\nvisible slice, and scoping to it would flip the header checkbox to deselect while most of the\ndata is still unselected.\n\nThe checkbox's state and its click both have to speak about this one set."
            },
            {
              "kind": "method",
              "name": "handleSelectAllChange",
              "privacy": "private",
              "description": "Handles the header checkbox change to toggle select all / deselect all."
            },
            {
              "kind": "method",
              "name": "selectAll",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Selects all body rows. Only effective in multi-select mode.\n\nUnder `pagination-mode=\"controls\"` this covers the current page, and under infinite scroll every\nrow loaded so far; rows already selected elsewhere stay selected. Use `deselectAll()` to clear\nthe selection across pages.",
              "type": {
                "text": "selectAll() => void"
              }
            },
            {
              "kind": "method",
              "name": "deselectAll",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Clears all row selections, across every page.",
              "type": {
                "text": "deselectAll() => void"
              }
            },
            {
              "kind": "method",
              "name": "isGroupRowId",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "rowId",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "Checks if a row ID belongs to an auto-generated group row."
            },
            {
              "kind": "method",
              "name": "groupData",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridRow[]"
                }
              },
              "parameters": [
                {
                  "name": "data",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                }
              ],
              "description": "Groups flat data by column values into a tree structure."
            },
            {
              "kind": "method",
              "name": "getGroupedKeySet",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Set<string>"
                }
              },
              "description": "Parses `groupBy` into a set of column keys (empty if grouping is off)."
            },
            {
              "kind": "method",
              "name": "getOrderedColumns",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridColumn[]"
                }
              },
              "description": "Returns the top-level column tree reordered so grouped columns come first\n(in `groupBy` order), then the remaining columns in their declared order.\nGrouped columns get the leading leaf positions so the group-row toggle/label\naligns with them and their body cells render blank."
            },
            {
              "kind": "method",
              "name": "groupByKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridRow[]"
                }
              },
              "parameters": [
                {
                  "name": "data",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                },
                {
                  "name": "groupKeys",
                  "type": {
                    "text": "string[]"
                  }
                },
                {
                  "name": "level",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "warnedCyclicData",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Cyclic data is a defect in the data, not a per-row event — warn once per grid."
            },
            {
              "kind": "method",
              "name": "warnCyclicData",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Reports a row reachable from itself through `children`. The tree walks below stop descending\nat that point instead of recursing until the stack gives out, which would take the page with it."
            },
            {
              "kind": "method",
              "name": "flattenTree",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "FlatRow[]"
                }
              },
              "parameters": [
                {
                  "name": "data",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                },
                {
                  "name": "depth",
                  "default": "0"
                },
                {
                  "name": "ancestors",
                  "default": "new Set()",
                  "type": {
                    "text": "Set<EdDataGridRow>"
                  }
                }
              ],
              "description": "Recursively flattens hierarchical data into a flat list for rendering."
            },
            {
              "kind": "method",
              "name": "aggregateColumn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                },
                {
                  "name": "children",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                }
              ],
              "description": "Computes the aggregated value for a column across child rows."
            },
            {
              "kind": "method",
              "name": "aggregateFooterColumn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                },
                {
                  "name": "rows",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                }
              ],
              "description": "Computes the footer totals-row value for a column across the entire dataset\n(post-sort, ignoring pagination and virtual slicing)."
            },
            {
              "kind": "method",
              "name": "aggregatePreset",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "preset",
                  "type": {
                    "text": "'sum' | 'avg' | 'count' | 'min' | 'max'"
                  }
                },
                {
                  "name": "values",
                  "type": {
                    "text": "unknown[]"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                },
                {
                  "name": "leafRows",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "collectLeafRows",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridRow[]"
                }
              },
              "parameters": [
                {
                  "name": "rows",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                },
                {
                  "name": "ancestors",
                  "default": "new Set()",
                  "type": {
                    "text": "Set<EdDataGridRow>"
                  }
                }
              ],
              "description": "Collects all leaf (non-group) rows from a tree."
            },
            {
              "kind": "method",
              "name": "secondsToISODuration",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "totalSeconds",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Converts total seconds back to an ISO 8601 duration string."
            },
            {
              "kind": "method",
              "name": "expandRow",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "rowId",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "Expands a tree or group row. For lazy rows, emits load event.",
              "type": {
                "text": "expandRow(rowId: unknown) => void"
              }
            },
            {
              "kind": "method",
              "name": "collapseRow",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "rowId",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "Collapses a tree or group row.",
              "type": {
                "text": "collapseRow(rowId: unknown) => void"
              }
            },
            {
              "kind": "method",
              "name": "toggleRow",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "rowId",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "Toggles a tree or group row's expanded/collapsed state.",
              "type": {
                "text": "toggleRow(rowId: unknown) => void"
              }
            },
            {
              "kind": "method",
              "name": "clearResolvedLazyRows",
              "privacy": "private",
              "description": "Removes loading state from lazy rows that have received their children."
            },
            {
              "kind": "method",
              "name": "findRowById",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridRow | undefined"
                }
              },
              "parameters": [
                {
                  "name": "rowId",
                  "type": {
                    "text": "unknown"
                  }
                },
                {
                  "name": "data",
                  "default": "this.data",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                },
                {
                  "name": "ancestors",
                  "default": "new Set()",
                  "type": {
                    "text": "Set<EdDataGridRow>"
                  }
                }
              ],
              "description": "Recursively finds a row by its key in the data tree."
            },
            {
              "kind": "method",
              "name": "isColumnResizable",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                }
              ],
              "description": "Returns whether a column is resizable based on column or grid-level setting."
            },
            {
              "kind": "method",
              "name": "ensureColumnWidths",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number[]"
                }
              },
              "description": "Initializes column widths from computed styles on first resize.\nMust be called before starting a resize gesture."
            },
            {
              "kind": "method",
              "name": "applyColumnWidths",
              "privacy": "private",
              "parameters": [
                {
                  "name": "widths",
                  "type": {
                    "text": "number[]"
                  }
                }
              ],
              "description": "Applies column widths to grid-template-columns on the scroll-area."
            },
            {
              "kind": "method",
              "name": "handleResizeSeparatorKeydown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Arrow-key resize on the focused header separator (APG window splitter),\n16px per press, clamped to [MIN_COLUMN_WIDTH, KEYBOARD_RESIZE_MAX]. The\nseparator stays focused, so screen readers announce the aria-valuenow\nchange without a live region."
            },
            {
              "kind": "method",
              "name": "handleResizePointerDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                },
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Handles pointerdown on a resize handle to start a resize gesture."
            },
            {
              "kind": "field",
              "name": "handleScrollEvents",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleRowDblclick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                },
                {
                  "name": "row",
                  "type": {
                    "text": "EdDataGridRow"
                  }
                },
                {
                  "name": "dataIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleColumnDragStart",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "DragEvent"
                  }
                },
                {
                  "name": "colIdx",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleColumnDragOver",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "DragEvent"
                  }
                },
                {
                  "name": "colIdx",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleColumnDrop",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "DragEvent"
                  }
                },
                {
                  "name": "colIdx",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleColumnDragEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "clearColumnDropIndicators",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "rowReorderLocked",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Reordering only means anything while the rendered order *is* the `data` order.\n\nA sort, `groupBy` or a hierarchy re-orders rows on the way to the screen, so a move the user\nexpresses in rendered positions resolves to a different place in `data` — and the sort then\nputs the row straight back. The result is a silently rewritten dataset and nothing to see.\n\nRead once per render and once per interaction, never per row: the `data.some` scan would\notherwise run for every rendered row.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "rowSortable",
              "privacy": "private",
              "default": "new SortableController(this, { container: () => this.renderRoot.querySelector<HTMLElement>('.body'), getItems: () => this.getBodyRows(), // Only rows that exist in `data` can be moved: group headers are synthesized and tree children // live inside a parent's `children`, so neither has an index the reorder event could name. // A locked grid yields no item at all, so the drag never starts. itemFor: target => { if (this.rowReorderLocked) return null; const rowEl = target.closest<HTMLElement>('.row'); return rowEl && this.dataIndexOfRowElement(rowEl) >= 0 ? rowEl : null; }, // Same mechanism for drop targets: a non-data row is skipped, so the gap never opens on one. groupOf: item => (this.dataIndexOfRowElement(item) >= 0 ? 'data-row' : undefined), axis: 'vertical', overlay: () => this.shadowRoot ?? document.body, onReorder: drop => this.commitRowReorder(drop) })"
            },
            {
              "kind": "method",
              "name": "dataIndexOfRowElement",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "rowEl",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "The `data` index of a rendered row, or -1 when it has none.\n\nThe reorder event names positions in `data`, while the sortable controller reports them in the\nrendered list — a different space as soon as sorting, grouping, paging or virtual scroll is in\nplay. Resolving through the row object rather than arithmetic keeps the two apart."
            },
            {
              "kind": "method",
              "name": "commitRowReorder",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "drop",
                  "type": {
                    "text": "SortableDrop"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "toggleRowGrab",
              "privacy": "private",
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "EdDataGridRow"
                  }
                }
              ],
              "description": "Space/click on the drag handle: lift the row, or drop it at its current position."
            },
            {
              "kind": "method",
              "name": "grabbedRowIndex",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "description": "Current `this.data` index of the grabbed row; -1 when it left the dataset."
            },
            {
              "kind": "method",
              "name": "dropGrabbedRow",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "moveGrabbedRow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "1 | -1"
                  }
                }
              ],
              "description": "ArrowUp/ArrowDown while lifted: request a one-step move via ed-row-reorder."
            },
            {
              "kind": "method",
              "name": "cancelRowGrab",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "description": "Escape while lifted: roll the row back to its lift position and exit the mode."
            },
            {
              "kind": "method",
              "name": "refocusGrabbedHandle",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleGrabKeydown",
              "privacy": "private",
              "description": "Capture-phase keydown: while a row is lifted, arrows move it and Escape\ncancels — consumed here so grid navigation never sees the keys. Space/Enter\nare not handled: they activate the handle button natively (toggleRowGrab)."
            },
            {
              "kind": "field",
              "name": "handleGrabFocusOut",
              "privacy": "private",
              "description": "Focus leaving the lifted row's handle drops the row at its current position\n(mirrors ending a mouse drag). Deferred to the next frame so the re-focus\nafter a move's re-render (which re-parents the button) is not mistaken for\nleaving."
            },
            {
              "kind": "field",
              "name": "effectiveLoadingRows",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "description": "Resolves the skeleton-row count for `loading-mode=\"skeleton\"`.\nConsumer-set `loading-rows > 0` wins. Otherwise viewport-derived (body height ÷ row height),\nfalling back to a constant of 5 when row height or viewport metrics are unavailable.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "computeViewportLoadingRows",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              }
            },
            {
              "kind": "method",
              "name": "announce",
              "privacy": "private",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Announces a message via the polite status region (WCAG 4.1.3 status messages).\nClears the region first so an identical repeated message is re-announced."
            },
            {
              "kind": "field",
              "name": "effectiveTotalRows",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "totalPages",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isAllDataLoaded",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getPaginatedFlatRows",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "FlatRow[]"
                }
              },
              "parameters": [
                {
                  "name": "flatRows",
                  "type": {
                    "text": "FlatRow[]"
                  }
                }
              ],
              "description": "Returns the paginated slice of flat rows for controls pagination."
            },
            {
              "kind": "field",
              "name": "cycleRows",
              "type": {
                "text": "{ sortedData: EdDataGridRow[]; flatRows: FlatRow[]; renderRows: FlatRow[] } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Sort → group → flatten, shared by everything in one update cycle.\n\n`willUpdate` needs the row count and `render()` needs the rows themselves, and both used to run\nthe whole pipeline independently — a full `[...data].sort()` twice per render. The result is held\nonly for the current cycle and dropped again in `willUpdate`/`updated`, because expansion,\nlazy-loading and sort state are mutated between updates without a reactive property to notice\nit: a list kept across cycles could describe data that has already moved on."
            },
            {
              "kind": "method",
              "name": "getPipelineRows",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ sortedData: EdDataGridRow[]; flatRows: FlatRow[]; renderRows: FlatRow[] }"
                }
              }
            },
            {
              "kind": "method",
              "name": "getRenderRows",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "FlatRow[]"
                }
              },
              "description": "The flat row list the grid renders from, post sort / group / flatten / page —\nthe same list `render()` slices for the virtual-scroll window. It is the\nabsolute index space the selection and keyboard controllers address: row\nclick/checkbox/keyboard handlers pass indices into *this* list, so a row\nstays addressable by the same index whether or not it is in the rendered\nwindow."
            },
            {
              "kind": "method",
              "name": "goToPage",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Navigates to a specific page.",
              "type": {
                "text": "goToPage(page: number) => void"
              }
            },
            {
              "kind": "method",
              "name": "applyPagination",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "pageSize",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The single write path for page and page size, so one user action produces one\n`ed-pagination-change`.\n\nApplying them separately meant a page-size change from the pagination bar ran through\n`setPageSize()` and `goToPage()` in turn and emitted twice — first for page 1, then for the page\nthat actually ends up current. A consumer loading on the event fetched a page the user was never\non, and on a slow connection that response could arrive last and win."
            },
            {
              "kind": "method",
              "name": "setPageSize",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "size",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Changes the page size and resets to page 1.",
              "type": {
                "text": "setPageSize(size: number) => void"
              }
            },
            {
              "kind": "method",
              "name": "handlePaginationPageChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handlePaginationPageSizeChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getSelectedCount",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              }
            },
            {
              "kind": "method",
              "name": "setupInfiniteScroll",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "teardownInfiniteScroll",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setupVirtualScroll",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "teardownVirtualScroll",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleVirtualScroll",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "computeVisibleRange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getEffectiveRowHeight",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              }
            },
            {
              "kind": "method",
              "name": "measureRowHeight",
              "privacy": "private",
              "description": "Measure row height from first rendered body row after paint."
            },
            {
              "kind": "method",
              "name": "scrollToIndex",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Scrolls the grid so that the row at the given data index is visible.",
              "type": {
                "text": "scrollToIndex(index: number) => void"
              }
            },
            {
              "kind": "method",
              "name": "scrollBodyRowIntoView",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<HTMLElement | null>"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Ensures the body row at the given absolute flat index is inside the render\nwindow and returns its element (keyboard virtual navigation). Under virtual\nscroll it moves the scroll position and recomputes the window *synchronously*\n— not through the debounced scroll listener — so the row is guaranteed\nrendered once `updateComplete` settles. Without virtual scroll every row is\nalready in the DOM, so it just resolves the element."
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "method",
              "name": "measureScrollbar",
              "privacy": "private",
              "description": "Measures scrollbar width and detects height-constrained overflow."
            },
            {
              "kind": "method",
              "name": "updatePinShadows",
              "privacy": "private",
              "parameters": [
                {
                  "name": "scrollArea",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Updates the pinned-region overlay shadows: their position (band widths), height\n(the scroll-area's clientHeight), and opacity (scroll-driven, 5% fade like ed-scroller).\nMath.abs(scrollLeft) handles RTL — modern browsers report negative scrollLeft there."
            },
            {
              "kind": "method",
              "name": "getColumnAlign",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "parameters": [
                {
                  "name": "col",
                  "type": {
                    "text": "EdDataGridColumn"
                  }
                },
                {
                  "name": "isHeader",
                  "default": "false"
                }
              ],
              "description": "Returns the default text-align for a column type."
            },
            {
              "kind": "method",
              "name": "getAriaSortValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'ascending' | 'descending' | 'none' | undefined"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HeaderCellData"
                  }
                }
              ],
              "description": "Returns the aria-sort value for a header cell based on current sort state."
            },
            {
              "kind": "method",
              "name": "renderLoadingOverlay",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              },
              "parameters": [
                {
                  "name": "totalCellCount",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "hasFooterAggregates",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "leafColumns",
                  "type": {
                    "text": "EdDataGridColumn[]"
                  }
                }
              ],
              "description": "True when any leaf column has `footerAggregate` or `renderFooterAggregate` set."
            },
            {
              "kind": "method",
              "name": "renderTotalsRow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              },
              "parameters": [
                {
                  "name": "leafColumns",
                  "type": {
                    "text": "EdDataGridColumn[]"
                  }
                },
                {
                  "name": "sortedData",
                  "type": {
                    "text": "EdDataGridRow[]"
                  }
                },
                {
                  "name": "hasCheckboxCol",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "ariaRowIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "dragLeadingPinAttrs",
                  "type": {
                    "text": "{ class: string; style: string } | null"
                  }
                },
                {
                  "name": "checkboxLeadingPinAttrs",
                  "type": {
                    "text": "{ class: string; style: string } | null"
                  }
                },
                {
                  "name": "pinLayout",
                  "type": {
                    "text": "{\n      styles: Map<number, string>;\n      lastStartPinLeafIdx: number;\n      firstEndPinLeafIdx: number;\n      leadingEdge: 'drag' | 'checkbox' | null;\n    }"
                  }
                }
              ],
              "description": "Renders the column-aligned totals row at the top of the footer. Called only when\nat least one leaf column has `footerAggregate` or `renderFooterAggregate` set."
            },
            {
              "kind": "method",
              "name": "renderFooterBar",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult | typeof nothing"
                }
              },
              "parameters": [
                {
                  "name": "totalDataRows",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectedCount",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Renders the footer bar: counts area (or footer slot content) at the inline-start,\npagination at the inline-end. Returns `nothing` when none of those have content,\nso the footer (and its top border) is omitted entirely rather than reserving space."
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "{ sorts: SortEntry[], added?: SortEntry }"
              },
              "description": "Emitted when a sortable column header is activated. Cancelable; calling `preventDefault()` leaves the sort unchanged.",
              "name": "ed-sort",
              "reactName": "onEdSort",
              "eventName": "EdSortEvent"
            },
            {
              "type": {
                "text": "{ data: Record<string, unknown>[], selectedKeys: Set<unknown> }"
              },
              "description": "Emitted when row selection changes. `data` lists the selected row objects in their original order; `selectedKeys` is the set of selected row-key values.",
              "name": "ed-selection-change",
              "reactName": "onEdSelectionChange",
              "eventName": "EdSelectionChangeEvent"
            },
            {
              "type": {
                "text": "{ column: string, width: number }"
              },
              "description": "Emitted when a column is resized via drag handle.",
              "name": "ed-column-resize",
              "reactName": "onEdColumnResize",
              "eventName": "EdColumnResizeEvent"
            },
            {
              "type": {
                "text": "{ page: number, pageSize: number }"
              },
              "description": "Emitted when the page or page size changes.",
              "name": "ed-pagination-change",
              "reactName": "onEdPaginationChange",
              "eventName": "EdPaginationChangeEvent"
            },
            {
              "type": {
                "text": "{ row: EdDataGridRow, fromIndex: number, toIndex: number }"
              },
              "description": "Emitted when a row is reordered — once per drag-and-drop, or once per one-step move while a row is lifted via its keyboard handle. The grid never reorders `data` itself; apply the move in your handler.",
              "name": "ed-row-reorder",
              "reactName": "onEdRowReorder",
              "eventName": "EdRowReorderEvent"
            },
            {
              "type": {
                "text": "{ column: EdDataGridColumn, fromIndex: number, toIndex: number, columnKeys: string[] }"
              },
              "description": "Emitted after the grid has applied a column drag-drop move. `columnKeys` is the full leaf-column key order after the move so consumers can persist per-user column order. The grid renders the new order internally; consumers don't need to mutate `columns`.",
              "name": "ed-column-reorder",
              "reactName": "onEdColumnReorder",
              "eventName": "EdColumnReorderEvent"
            },
            {
              "type": {
                "text": "{ row: EdDataGridRow, rowId: unknown }"
              },
              "description": "Emitted when a group row is expanded.",
              "name": "ed-row-expand",
              "reactName": "onEdRowExpand",
              "eventName": "EdRowExpandEvent"
            },
            {
              "type": {
                "text": "{ row: EdDataGridRow, rowId: unknown }"
              },
              "description": "Emitted when a group row is collapsed.",
              "name": "ed-row-collapse",
              "reactName": "onEdRowCollapse",
              "eventName": "EdRowCollapseEvent"
            },
            {
              "type": {
                "text": "{ row: HTMLElement, data?: EdDataGridRow, rowIndex: number }"
              },
              "description": "Emitted on row double-click.",
              "name": "ed-row-dblclick",
              "reactName": "onEdRowDblclick",
              "eventName": "EdRowDblclickEvent"
            },
            {
              "type": {
                "text": "{ scrollTop: number, scrollLeft: number }"
              },
              "description": "Emitted when scrolling begins.",
              "name": "ed-scroll-start",
              "reactName": "onEdScrollStart",
              "eventName": "EdScrollStartEvent"
            },
            {
              "type": {
                "text": "{ scrollTop: number, scrollLeft: number }"
              },
              "description": "Emitted when scrolling ends.",
              "name": "ed-scroll-end",
              "reactName": "onEdScrollEnd",
              "eventName": "EdScrollEndEvent"
            },
            {
              "type": {
                "text": "{ offset: number }"
              },
              "description": "Emitted when infinite scroll reaches near the bottom and needs more data.",
              "name": "ed-load-more",
              "reactName": "onEdLoadMore",
              "eventName": "EdLoadMoreEvent"
            },
            {
              "type": {
                "text": "{ row: EdDataGridRow, rowId: unknown }"
              },
              "description": "Emitted when an expanded row marked `lazy: true` needs its children loaded.",
              "name": "ed-lazy-load",
              "reactName": "onEdLazyLoad",
              "eventName": "EdLazyLoadEvent"
            }
          ],
          "attributes": [
            {
              "name": "row-key",
              "type": {
                "text": "string"
              },
              "default": "'id'",
              "description": "Property key used to uniquely identify rows.",
              "fieldName": "rowKey"
            },
            {
              "name": "sortable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables sortable columns.",
              "fieldName": "sortable"
            },
            {
              "name": "sort-mode",
              "type": {
                "text": "'single' | 'multi'"
              },
              "default": "'single'",
              "description": "Sort mode. `'single'` allows one sorted column; `'multi'` allows Shift+click multi-sort.",
              "fieldName": "sortMode"
            },
            {
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables row selection.",
              "fieldName": "selectable"
            },
            {
              "name": "selection-mode",
              "type": {
                "text": "'single' | 'multi'"
              },
              "default": "'single'",
              "description": "Selection mode. `'single'` allows one selected row; `'multi'` allows range/toggle selection.",
              "fieldName": "selectionMode"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls row density (padding and height).",
              "fieldName": "density"
            },
            {
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes all columns resizable via drag handle.",
              "fieldName": "resizable"
            },
            {
              "name": "column-reorderable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables column reordering via drag-and-drop on header cells.",
              "fieldName": "columnReorderable"
            },
            {
              "name": "row-reorderable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables row reordering via drag-and-drop handle and the keyboard grab pattern.\n\nLocks itself while a sort, `groupBy` or hierarchical data re-orders the rows, since a move\nwould then rewrite `data` invisibly. A filter applied before `data` is passed in is not\nvisible to the grid — switch this off yourself in that case.",
              "fieldName": "rowReorderable"
            },
            {
              "name": "pin-controls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Pins the generated leading columns (row-drag handle and multi-select checkbox) to the start.\nAuto-enabled whenever any user column has `pin: 'start'`.",
              "fieldName": "pinControls"
            },
            {
              "name": "group-by",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Groups flat data by column value(s). Comma-separated for nested grouping.",
              "fieldName": "groupBy"
            },
            {
              "name": "pagination",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables pagination.",
              "fieldName": "pagination"
            },
            {
              "name": "pagination-mode",
              "type": {
                "text": "'controls' | 'infinite'"
              },
              "default": "'controls'",
              "description": "Pagination mode. `'controls'` shows page controls; `'infinite'` loads more on scroll.",
              "fieldName": "paginationMode"
            },
            {
              "name": "total-rows",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Total number of rows (for server-side pagination). When set, uses this instead of `.data.length`.",
              "fieldName": "totalRows"
            },
            {
              "name": "current-page",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Current page (1-based).",
              "fieldName": "currentPage"
            },
            {
              "name": "page-size",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "Number of rows per page.",
              "fieldName": "pageSize"
            },
            {
              "name": "page-size-options",
              "type": {
                "text": "number[]"
              },
              "default": "[50, 200, 500, 1000]",
              "description": "Available page size options for the pagination dropdown.",
              "fieldName": "pageSizeOptions"
            },
            {
              "name": "hide-entry-count",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the entry count piece in the footer counts area. Inert when the `footer` slot is used.",
              "fieldName": "hideEntryCount"
            },
            {
              "name": "hide-selection-count",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the selection count piece in the footer counts area. The selection count is also\nauto-hidden when no rows are selected, so this attribute matters only when ≥ 1 row is selected.\nInert when the `footer` slot is used.",
              "fieldName": "hideSelectionCount"
            },
            {
              "name": "virtual-scroll",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables virtual scrolling for large datasets.",
              "fieldName": "virtualScroll"
            },
            {
              "name": "row-height",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Explicit row height in pixels. If 0, measured from first rendered row.",
              "fieldName": "rowHeight"
            },
            {
              "name": "scroll-buffer",
              "type": {
                "text": "number"
              },
              "default": "5",
              "description": "Number of buffer rows rendered above and below the visible viewport.",
              "fieldName": "scrollBuffer"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a loading indicator over the grid body.",
              "fieldName": "loading"
            },
            {
              "name": "loading-mode",
              "type": {
                "text": "'skeleton' | 'progress-bar'"
              },
              "default": "'skeleton'",
              "description": "Loading appearance.\n`'skeleton'` renders placeholder rows replacing the body content (default).\n`'progress-bar'` renders an indeterminate `<ed-progress-bar>` sticky at the top of the body\nwhile existing rows remain visible (but locked-out via `inert`).",
              "fieldName": "loadingMode"
            },
            {
              "name": "loading-rows",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Number of skeleton rows in `loading-mode=\"skeleton\"`.\n`0` (default) derives the count from the viewport height; falls back to 5 when no row height is measurable.",
              "fieldName": "loadingRows"
            },
            {
              "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 data-driven grid for displaying and interacting with large datasets with sorting, selection, virtual scroll, and more.",
          "jsDoc": "/**\n * @summary  A data-driven grid for displaying and interacting with large datasets with sorting, selection, virtual scroll, and more.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/data-grid\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('grid' | 'treegrid')\n *\n * @dependency ed-icon\n * @dependency ed-checkbox\n * @dependency ed-empty-state\n * @dependency ed-pagination\n * @dependency ed-progress-bar\n * @dependency ed-progress-ring\n * @dependency ed-skeleton\n *\n * @event {{ sorts: SortEntry[], added?: SortEntry }} ed-sort - Emitted when a sortable column header is activated.\n *  Cancelable; calling `preventDefault()` leaves the sort unchanged.\n * @event {{ data: Record<string, unknown>[], selectedKeys: Set<unknown> }} ed-selection-change - Emitted when row selection changes. `data` lists the selected row objects in their original order; `selectedKeys` is the set of selected row-key values.\n * @event {{ column: string, width: number }} ed-column-resize - Emitted when a column is resized via drag handle.\n * @event {{ page: number, pageSize: number }} ed-pagination-change - Emitted when the page or page size changes.\n * @event {{ row: EdDataGridRow, fromIndex: number, toIndex: number }} ed-row-reorder - Emitted when a row is reordered — once per drag-and-drop, or once per one-step move while a row is lifted via its keyboard handle. The grid never reorders `data` itself; apply the move in your handler.\n * @event {{ column: EdDataGridColumn, fromIndex: number, toIndex: number, columnKeys: string[] }} ed-column-reorder - Emitted after the grid has applied a column drag-drop move. `columnKeys` is the full leaf-column key order after the move so consumers can persist per-user column order. The grid renders the new order internally; consumers don't need to mutate `columns`.\n * @event {{ row: EdDataGridRow, rowId: unknown }} ed-row-expand - Emitted when a group row is expanded.\n * @event {{ row: EdDataGridRow, rowId: unknown }} ed-row-collapse - Emitted when a group row is collapsed.\n * @event {{ row: HTMLElement, data?: EdDataGridRow, rowIndex: number }} ed-row-dblclick - Emitted on row double-click.\n * @event {{ scrollTop: number, scrollLeft: number }} ed-scroll-start - Emitted when scrolling begins.\n * @event {{ scrollTop: number, scrollLeft: number }} ed-scroll-end - Emitted when scrolling ends.\n * @event {{ offset: number }} ed-load-more - Emitted when infinite scroll reaches near the bottom and needs more data.\n * @event {{ row: EdDataGridRow, rowId: unknown }} ed-lazy-load - Emitted when an expanded row marked `lazy: true` needs its children loaded.\n *\n * @cssproperty [--ed-data-grid-row-height=var(--ed-size-8)] - Overwrites the density attribute for manual row height adjustment.\n * @cssproperty [--ed-data-grid-pin-shadow-size=var(--ed-space-1)] - Length of the shadow that fades in from each pinned-region edge\n *   onto the scrolling content when content is hidden behind that region.\n * @cssproperty [--ed-data-grid-pin-shadow-color=var(--ed-color-shadow)] - Color of the pinned-region scroll shadow.\n *\n * @slot empty - Content to display when the grid has no data rows.\n * @slot loading - Custom loading overlay content. When assigned, suppresses the default skeleton or\n *   progress-bar visual. Framework still owns `aria-busy`, the `inert` lock-out, and the live-region\n *   announcement. Note: the slot's projection point is inside an `inert` subtree while loading is true,\n *   so focusable controls in the slot are not tab-reachable. Place interactive controls (e.g. a \"Cancel\"\n *   button) outside `<ed-data-grid>` instead.\n * @slot footer - Replaces the default counts area in the footer. Pagination (when `pagination` +\n *   `pagination-mode=\"controls\"`) still renders at the inline-end; the totals row (when any leaf column\n *   has `footerAggregate` or `renderFooterAggregate`) still renders above. The `hide-entry-count` and\n *   `hide-selection-count` attributes are inert while this slot has assigned content.\n *\n * @csspart loading-overlay - Wrapper element around the loading visual (built-in or slotted).\n * @csspart loading-row - Each skeleton row in `loading-mode=\"skeleton\"`.\n * @csspart loading-cell - Each skeleton cell in `loading-mode=\"skeleton\"`.\n * @csspart status - Visually hidden polite live region announcing loading, sort, selection, and pagination status changes.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/data-grid",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('grid' | 'treegrid')",
          "dependencies": [
            "ed-icon",
            "ed-checkbox",
            "ed-empty-state",
            "ed-pagination",
            "ed-progress-bar",
            "ed-progress-ring",
            "ed-skeleton"
          ],
          "tagName": "ed-data-grid",
          "customElement": true,
          "modulePath": "components/data-grid/data-grid.js",
          "definitionPath": "components/data-grid/data-grid.js",
          "cssStates": []
        },
        {
          "kind": "variable",
          "name": "value",
          "default": "row[key]"
        }
      ],
      "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": "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"
            },
            {
              "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": "{ group: SegmentGroup; field: string } | null"
              }
            },
            {
              "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"
              }
            }
          ],
          "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": "'–'"
            }
          ],
          "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."
        },
        {
          "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}"
              }
            }
          ],
          "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": "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/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 — the same trick `SliderValidator` uses — because the browser's own wording names the two\nnearest valid values, which no generic sentence 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 panel holding the calendar.",
              "name": "popup"
            },
            {
              "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, rendered only when the `footer` slot has content.",
              "name": "footer"
            },
            {
              "description": "The consumer's own control row under it, rendered only when the `footer-controls` slot has content.",
              "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 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"
            },
            {
              "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"
            },
            {
              "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": "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."
            },
            {
              "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."
            },
            {
              "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": "Partial<Record<DateField, number | null>>"
              }
            },
            {
              "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": "Partial<Record<DateField, number | null>>"
              }
            },
            {
              "kind": "field",
              "name": "endSegments",
              "type": {
                "text": "DateSegments"
              },
              "privacy": "private",
              "default": "{}",
              "parsedType": {
                "text": "Partial<Record<DateField, number | null>>"
              }
            },
            {
              "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": "'time' | 'date' | 'datetime' | 'month' | 'week' | 'quarter' | 'year' | 'halfyear'"
              }
            },
            {
              "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
            },
            {
              "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"
            },
            {
              "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
            },
            {
              "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": "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"
            },
            {
              "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`."
            },
            {
              "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
            },
            {
              "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.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the picker.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "show() => Promise<void>"
              }
            },
            {
              "kind": "method",
              "name": "hide",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "description": "Closes the calendar. Resolves once it has finished animating.",
              "type": {
                "text": "hide() => Promise<void>"
              }
            },
            {
              "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."
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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",
              "type": {
                "text": "formResetCallback() => void"
              }
            },
            {
              "kind": "method",
              "name": "formStateRestoreCallback",
              "parameters": [
                {
                  "name": "state",
                  "type": {
                    "text": "string | File | FormData | null"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "'autocomplete' | 'restore'"
                  }
                }
              ],
              "type": {
                "text": "formStateRestoreCallback(state: string | File | FormData | null, reason: 'autocomplete' | 'restore') => void"
              }
            },
            {
              "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": "'date' | 'datetime' | 'month' | 'week' | 'quarter' | 'halfYear' | 'year'"
              }
            },
            {
              "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": "layout",
              "type": {
                "text": "SegmentLayout"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "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": "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"
              },
              "type": {
                "text": "setValue(args: Parameters<EdFormAssociatedElement['setValue']>) => void"
              }
            },
            {
              "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": "'date' | 'month' | 'week' | 'quarter' | 'year' | '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 rendered only where there is content for it, so an empty slot costs no space and no\nborder. Nothing is wired: a control in here does what the consumer's own listener says, and the\npanel 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
            },
            {
              "kind": "field",
              "name": "panelTerm",
              "type": {
                "text": "'chooseDate' | 'chooseTime' | 'chooseDateAndTime'"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "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": "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"
                  }
                }
              ]
            },
            {
              "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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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,
              "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'",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "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"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "'time' | 'date' | 'datetime' | 'month' | 'week' | 'quarter' | 'year' | 'halfyear'"
              }
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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": "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"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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",
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('spinbutton', { name: 'Day' }) — `'Hour'` for `type=\"time\"`; with `range`, scope through `getByRole('group', { name: '<label> from', exact: true })` first, where \"from\" is `label-start`'s text when that attribute is set\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 popup - The panel holding the calendar.\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, rendered only when the `footer` slot has content.\n * @csspart footer-controls - The consumer's own control row under it, rendered only when the `footer-controls` slot has content.\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 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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('spinbutton', { name: 'Day' }) — `'Hour'` for `type=\"time\"`; with `range`, scope through `getByRole('group', { name: '<label> from', exact: true })` first, where \"from\" is `label-start`'s text when that attribute is set",
          "dependencies": [
            "ed-button",
            "ed-calendar",
            "ed-icon",
            "ed-popup"
          ],
          "tagName": "ed-date-picker",
          "customElement": true,
          "modulePath": "components/date-picker/date-picker.js",
          "definitionPath": "components/date-picker/date-picker.js"
        }
      ],
      "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/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
            },
            {
              "kind": "field",
              "name": "iconPlacement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "The location of the expand/collapse icon.",
              "attribute": "icon-placement",
              "reflects": true
            },
            {
              "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.",
              "type": {
                "text": "show() => void"
              }
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the details",
              "type": {
                "text": "hide() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "name": "icon-placement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "The location of the expand/collapse icon.",
              "fieldName": "iconPlacement"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('button')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('button')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-details",
          "customElement": true,
          "modulePath": "components/details/details.js",
          "definitionPath": "components/details/details.js"
        }
      ],
      "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('button')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('button')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-page-thumbnail",
          "customElement": true,
          "modulePath": "components/page-thumbnail/page-thumbnail.js",
          "definitionPath": "components/page-thumbnail/page-thumbnail.js"
        }
      ],
      "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/validators/slider-validator.js",
      "declarations": [
        {
          "kind": "function",
          "name": "SliderValidator",
          "return": {
            "type": {
              "text": "Validator<EdSlider>"
            }
          },
          "description": "Comprehensive validator for sliders that handles required, range, and step validation"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "SliderValidator",
          "declaration": {
            "name": "SliderValidator",
            "module": "internal/validators/slider-validator.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 `tooltip` part.",
              "name": "tooltip__tooltip"
            },
            {
              "description": "The tooltip's `content` part.",
              "name": "tooltip__content"
            },
            {
              "description": "The tooltip's `arrow` part.",
              "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": "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": "draggableTrack",
              "type": {
                "text": "DraggableElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "draggableThumbMin",
              "type": {
                "text": "DraggableElement | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "draggableThumbMax",
              "type": {
                "text": "DraggableElement | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "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"
            },
            {
              "kind": "field",
              "name": "activeThumb",
              "type": {
                "text": "'min' | 'max' | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "lastTrackPosition",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override validation target to point to the focusable element",
              "readonly": true,
              "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
            },
            {
              "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,
              "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"
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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",
              "type": {
                "text": "formResetCallback() => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "focus() => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "privacy": "public",
              "description": "Removes focus from the slider.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "stepDown() => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "stepUp() => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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": "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'",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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",
              "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"
            },
            {
              "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"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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": "Ranges allow the user to select a single value within a given range using a slider.",
          "jsDoc": "/**\n * <ed-slider>\n *\n * @summary Ranges allow the user to select a single value within a given range using a slider.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/slider\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('slider')\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__tooltip - The tooltip's `tooltip` part.\n * @csspart tooltip__content - The tooltip's `content` part.\n * @csspart tooltip__arrow - The tooltip's `arrow` part.\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('slider')",
          "dependencies": [
            "ed-tooltip"
          ],
          "tagName": "ed-slider",
          "customElement": true,
          "modulePath": "components/slider/slider.js",
          "definitionPath": "components/slider/slider.js"
        }
      ],
      "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."
            },
            {
              "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."
            },
            {
              "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
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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",
              "parsedType": {
                "text": "{ page: number, rotation: 0 | 90 | 180 | 270 }"
              },
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('listbox')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('listbox')",
          "dependencies": [
            "ed-icon",
            "ed-page-thumbnail",
            "ed-slider",
            "ed-tooltip"
          ],
          "tagName": "ed-document-viewer",
          "customElement": true,
          "modulePath": "components/document-viewer/document-viewer.js",
          "definitionPath": "components/document-viewer/document-viewer.js",
          "cssStates": []
        }
      ],
      "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": "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 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"
            }
          ],
          "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.",
              "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": "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-select` event.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'normal' | 'checkbox'"
              },
              "default": "'normal'",
              "description": "Set to `checkbox` to make the item a checkbox.",
              "attribute": "type",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set to true to check the dropdown item. Only valid when `type` is `checkbox`.",
              "attribute": "checked"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the dropdown item.",
              "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": "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."
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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-select` event.",
              "fieldName": "value"
            },
            {
              "name": "type",
              "type": {
                "text": "'normal' | 'checkbox'"
              },
              "default": "'normal'",
              "description": "Set to `checkbox` to make the item a checkbox.",
              "fieldName": "type"
            },
            {
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set to true to check the dropdown item. Only valid when `type` is `checkbox`.",
              "fieldName": "checked"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the dropdown item.",
              "fieldName": "disabled"
            },
            {
              "name": "submenuOpen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the submenu is currently open.",
              "fieldName": "submenuOpen"
            },
            {
              "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": "Represents an individual item within a dropdown menu, supporting standard items, checkboxes, and submenus.",
          "jsDoc": "/**\n * @summary Represents an individual item within a dropdown menu, supporting standard items, checkboxes, and submenus.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dropdown-item\n * @status experimental\n * @since 1.0\n * @playwright getByRole('menuitem', { name: '…' })\n *\n * @dependency ed-checkbox\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 *\n * @csspart checkbox - The checkbox indicator (an `<ed-checkbox>` element) when the item is a checkbox.\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 */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dropdown-item",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByRole('menuitem', { name: '…' })",
          "dependencies": [
            "ed-checkbox",
            "ed-icon"
          ],
          "tagName": "ed-dropdown-item",
          "customElement": true,
          "modulePath": "components/dropdown-item/dropdown-item.js",
          "definitionPath": "components/dropdown-item/dropdown-item.js",
          "cssProperties": [],
          "cssStates": []
        }
      ],
      "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": "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 component's host element.",
              "name": "base"
            },
            {
              "description": "The dropdown menu container.",
              "name": "menu"
            }
          ],
          "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": "'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'right' | 'right-start' | 'right-end' | 'left' | '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[]"
                }
              },
              "parameters": [
                {
                  "name": "includeDisabled",
                  "default": "false"
                }
              ],
              "description": "Gets all dropdown items slotted in the menu."
            },
            {
              "kind": "method",
              "name": "getSubmenuItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDropdownItem[]"
                }
              },
              "parameters": [
                {
                  "name": "parentItem",
                  "type": {
                    "text": "EdDropdownItem"
                  }
                },
                {
                  "name": "includeDisabled",
                  "default": "false"
                }
              ],
              "description": "Gets all dropdown items in a specific submenu."
            },
            {
              "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": "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"
                  }
                }
              ],
              "description": "Makes a selection, emits the ed-select event, and closes the dropdown."
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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()` leaves the selection unchanged.",
              "name": "ed-select",
              "reactName": "onEdSelect",
              "eventName": "EdSelectEvent"
            }
          ],
          "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": "'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'right' | 'right-start' | 'right-end' | 'left' | '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 * @since 1.0\n * @playwright getByTestId('…').getByRole('menu')\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-select - Emitted when an item in the dropdown is selected.\n *  Cancelable; calling `preventDefault()` leaves the selection unchanged.\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 base - The component's host element.\n * @csspart menu - The dropdown menu container.\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('menu')",
          "dependencies": [
            "ed-dropdown-item",
            "ed-popup"
          ],
          "tagName": "ed-dropdown",
          "customElement": true,
          "modulePath": "components/dropdown/dropdown.js",
          "definitionPath": "components/dropdown/dropdown.js"
        }
      ],
      "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/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"
            },
            {
              "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"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…')\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-bytes",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-format-bytes",
          "customElement": true,
          "modulePath": "components/format-bytes/format-bytes.js",
          "definitionPath": "components/format-bytes/format-bytes.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": [],
          "events": [],
          "slots": []
        }
      ],
      "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/file-input/file-input.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdFileInput",
          "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 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": "['change']",
              "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"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "group",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "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,
              "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"
            },
            {
              "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. (The trigger button keeps its own action name;\nsee backlog #51 for folding the consumer label into it.)",
              "attribute": "aria-label",
              "reflects": true
            },
            {
              "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": "formResetCallback",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "type": {
                "text": "formResetCallback() => 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": "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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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,
              "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'",
              "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            }
          ],
          "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"
            },
            {
              "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. (The trigger button keeps its own action name;\nsee backlog #51 for folding the consumer label into it.)",
              "fieldName": "ariaLabel"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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",
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('button')\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 *\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 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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('button')",
          "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"
              }
            }
          ],
          "modulePath": "components/file-input/file-input.js",
          "definitionPath": "components/file-input/file-input.js"
        }
      ],
      "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-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` to render nothing.\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"
            },
            {
              "kind": "field",
              "name": "weekday",
              "type": {
                "text": "'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the weekday.",
              "attribute": "weekday"
            },
            {
              "kind": "field",
              "name": "era",
              "type": {
                "text": "'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the era.",
              "attribute": "era"
            },
            {
              "kind": "field",
              "name": "year",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the year.",
              "attribute": "year"
            },
            {
              "kind": "field",
              "name": "month",
              "type": {
                "text": "'numeric' | '2-digit' | 'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the month.",
              "attribute": "month"
            },
            {
              "kind": "field",
              "name": "day",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the day.",
              "attribute": "day"
            },
            {
              "kind": "field",
              "name": "hour",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the hour.",
              "attribute": "hour"
            },
            {
              "kind": "field",
              "name": "minute",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the minute.",
              "attribute": "minute"
            },
            {
              "kind": "field",
              "name": "second",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the second.",
              "attribute": "second"
            },
            {
              "kind": "field",
              "name": "timeZoneName",
              "type": {
                "text": "'short' | 'long'"
              },
              "description": "The format for displaying the time.",
              "attribute": "time-zone-name"
            },
            {
              "kind": "field",
              "name": "timeZone",
              "type": {
                "text": "string"
              },
              "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 combining the two shifts the rendered day away from the value.",
              "attribute": "time-zone"
            },
            {
              "kind": "field",
              "name": "hourFormat",
              "type": {
                "text": "'auto' | '12' | '24'"
              },
              "default": "'auto'",
              "description": "The format for displaying the hour.",
              "attribute": "hour-format"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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` to render nothing.\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"
            },
            {
              "name": "weekday",
              "type": {
                "text": "'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the weekday.",
              "fieldName": "weekday"
            },
            {
              "name": "era",
              "type": {
                "text": "'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the era.",
              "fieldName": "era"
            },
            {
              "name": "year",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the year.",
              "fieldName": "year"
            },
            {
              "name": "month",
              "type": {
                "text": "'numeric' | '2-digit' | 'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the month.",
              "fieldName": "month"
            },
            {
              "name": "day",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the day.",
              "fieldName": "day"
            },
            {
              "name": "hour",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the hour.",
              "fieldName": "hour"
            },
            {
              "name": "minute",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the minute.",
              "fieldName": "minute"
            },
            {
              "name": "second",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the second.",
              "fieldName": "second"
            },
            {
              "name": "time-zone-name",
              "type": {
                "text": "'short' | 'long'"
              },
              "description": "The format for displaying the time.",
              "fieldName": "timeZoneName"
            },
            {
              "name": "time-zone",
              "type": {
                "text": "string"
              },
              "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 combining the two shifts the rendered day away from the value.",
              "fieldName": "timeZone"
            },
            {
              "name": "hour-format",
              "type": {
                "text": "'auto' | '12' | '24'"
              },
              "default": "'auto'",
              "description": "The format for displaying the hour.",
              "fieldName": "hourFormat"
            },
            {
              "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 date/time using the specified locale and options.",
          "jsDoc": "/**\n * @summary Formats a date/time using the specified locale and options.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-date\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…')\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-date",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-format-date",
          "customElement": true,
          "modulePath": "components/format-date/format-date.js",
          "definitionPath": "components/format-date/format-date.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": [],
          "events": [],
          "slots": []
        }
      ],
      "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"
            },
            {
              "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"
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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": "Formats a number using the specified locale and options.",
          "jsDoc": "/**\n * @summary Formats a number using the specified locale and options.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-number\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…')\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-number",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-format-number",
          "customElement": true,
          "modulePath": "components/format-number/format-number.js",
          "definitionPath": "components/format-number/format-number.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": [],
          "events": [],
          "slots": []
        }
      ],
      "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]` reads it as its own minimum width, so the buttons in the header stay square when this changes.",
              "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.",
              "name": ""
            },
            {
              "description": "The branding logo. Rendered first in the DOM (so assistive technologies reach the home link before the navigation) but visually trailing. Images and inline SVGs are sized to fit the header height automatically.",
              "name": "logo"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('banner')\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.\n * @slot logo - The branding logo. Rendered first in the DOM (so assistive technologies reach the home link before the navigation) but visually trailing. Images and inline SVGs are sized to fit the header height automatically.\n *\n * @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]` reads it as its\n *   own minimum width, so the buttons in the header stay square when this changes.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/header",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('banner')",
          "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"
              }
            }
          ],
          "modulePath": "components/header/header.js",
          "definitionPath": "components/header/header.js",
          "cssStates": [],
          "events": []
        }
      ],
      "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/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 internal `<input>` control.",
              "name": "input"
            },
            {
              "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"
            }
          ],
          "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"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "description": "The input's maximum value. Only applies to date and number input types.",
              "attribute": "max"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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": "handleChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClearClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "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.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the input.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "kind": "method",
              "name": "select",
              "description": "Selects all the text in the input.",
              "type": {
                "text": "select() => void"
              }
            },
            {
              "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).",
              "type": {
                "text": "setSelectionRange(selectionStart: number, selectionEnd: number, selectionDirection: 'forward' | 'backward' | 'none' = 'none') => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "setRangeText(replacement: string, start?: number, end?: number, selectMode: 'select' | 'start' | 'end' | 'preserve' = 'preserve') => void"
              }
            },
            {
              "kind": "method",
              "name": "showPicker",
              "description": "Displays the browser picker for an input element (only works if the browser supports it for the input type).",
              "type": {
                "text": "showPicker() => void"
              }
            },
            {
              "kind": "method",
              "name": "stepUp",
              "description": "Increments the value of a numeric input type by the value of the step attribute.",
              "type": {
                "text": "stepUp() => void"
              }
            },
            {
              "kind": "method",
              "name": "stepDown",
              "description": "Decrements the value of a numeric input type by the value of the step attribute.",
              "type": {
                "text": "stepDown() => void"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "type": {
                "text": "formResetCallback() => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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,
              "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'",
              "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "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"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "description": "The input's maximum value. Only applies to date and number input types.",
              "fieldName": "max"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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",
              "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": "Inputs collect data from the user.",
          "jsDoc": "/**\n * @summary Inputs collect data from the user.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/input\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('textbox')\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 *\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 input - The internal `<input>` control.\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('textbox')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-input",
          "customElement": true,
          "modulePath": "components/input/input.js",
          "definitionPath": "components/input/input.js"
        }
      ],
      "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/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"
            },
            {
              "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"
            },
            {
              "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."
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-intersection-observer",
          "customElement": true,
          "modulePath": "components/intersection-observer/intersection-observer.js",
          "definitionPath": "components/intersection-observer/intersection-observer.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": []
        }
      ],
      "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/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 })` — removes both protections at once and makes\nsanitizing the consumer's responsibility.\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.",
              "type": {
                "text": "getMarkdownIt() => MarkdownIt"
              }
            },
            {
              "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.",
              "type": {
                "text": "updateAll() => void"
              }
            },
            {
              "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 inside this component."
            },
            {
              "kind": "method",
              "name": "renderMarkdown",
              "privacy": "public",
              "description": "Reads the script content, normalizes whitespace, parses markdown, and injects the result.",
              "type": {
                "text": "renderMarkdown() => void"
              }
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "Renders markdown content in plain ol' HTML.",
          "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 })` — removes both protections at once and makes\n * sanitizing the consumer's responsibility.\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 Renders markdown content in plain ol' HTML.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/markdown/\n * @status experimental\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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-markdown",
          "customElement": true,
          "modulePath": "components/markdown/markdown.js",
          "definitionPath": "components/markdown/markdown.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": [],
          "events": []
        }
      ],
      "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/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"
            },
            {
              "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
            },
            {
              "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.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the known date.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "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."
            },
            {
              "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,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "type": {
                "text": "formResetCallback() => void"
              }
            },
            {
              "kind": "method",
              "name": "formStateRestoreCallback",
              "parameters": [
                {
                  "name": "state",
                  "type": {
                    "text": "string | File | FormData | null"
                  }
                }
              ],
              "type": {
                "text": "formStateRestoreCallback(state: string | File | FormData | null) => void"
              }
            },
            {
              "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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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,
              "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'",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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",
              "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 draft\n * @since 1.0\n * @playwright getByTestId('…').getByRole('group')\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": "draft",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('group')",
          "tagName": "ed-known-date",
          "customElement": true,
          "modulePath": "components/known-date/known-date.js",
          "definitionPath": "components/known-date/known-date.js"
        }
      ],
      "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/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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-mutation-observer",
          "customElement": true,
          "modulePath": "components/mutation-observer/mutation-observer.js",
          "definitionPath": "components/mutation-observer/mutation-observer.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": []
        }
      ],
      "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": "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"
              },
              "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
            },
            {
              "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,
              "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": "The value of the switch, submitted as a name/value pair with form data while it is checked.\nDefaults to `'on'`, as on a native checkbox — never `null`.",
              "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"
              },
              "default": "null"
            },
            {
              "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": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseDragStart",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseDrag",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseDragEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleValueOrCheckedChange",
              "type": {
                "text": "handleValueOrCheckedChange() => void"
              }
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the switch.",
              "type": {
                "text": "click() => void"
              }
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the switch.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the switch.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setValue(args: Parameters<EdFormAssociatedElement['setValue']>) => void"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "type": {
                "text": "formResetCallback() => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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'",
              "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "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"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The value of the switch, submitted as a name/value pair with form data while it is checked.\nDefaults to `'on'`, as on a native checkbox — never `null`.",
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('switch')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-switch",
          "customElement": true,
          "modulePath": "components/switch/switch.js",
          "definitionPath": "components/switch/switch.js"
        }
      ],
      "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."
            },
            {
              "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"
            },
            {
              "kind": "field",
              "name": "previewObserver",
              "type": {
                "text": "IntersectionObserver | undefined"
              },
              "privacy": "private",
              "description": "Lazily requests previews for pages without a `src` as they near the viewport."
            },
            {
              "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."
            },
            {
              "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.",
              "type": {
                "text": "providePagePreview(page: PageEditorPage, src: string, variant: 'thumbnail' | 'preview' = 'thumbnail') => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "provideSuggestions(suggestions: { id: string; suggestion: PageEditorSuggestion }[]) => void"
              }
            },
            {
              "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`).",
              "type": {
                "text": "getResult() => PageEditorFile[]"
              }
            },
            {
              "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).",
              "type": {
                "text": "isDirty() => boolean"
              }
            },
            {
              "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)."
            },
            {
              "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": "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"
                  }
                }
              ]
            },
            {
              "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"
                  }
                }
              ]
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('group')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('group')",
          "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,
          "modulePath": "components/page-editor/page-editor.js",
          "definitionPath": "components/page-editor/page-editor.js"
        }
      ],
      "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/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"
            },
            {
              "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 popover's body where its content is rendered.",
              "name": "body"
            },
            {
              "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": "'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | '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"
            },
            {
              "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
            },
            {
              "kind": "field",
              "name": "eventController",
              "privacy": "private",
              "default": "new AbortController()"
            },
            {
              "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": "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.",
              "type": {
                "text": "show() => void"
              }
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the popover.",
              "type": {
                "text": "hide() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | '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"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('dialog')\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 body - The popover's body where its content is rendered.\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 - 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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('dialog')",
          "dependencies": [
            "ed-popup"
          ],
          "tagName": "ed-popover",
          "customElement": true,
          "modulePath": "components/popover/popover.js",
          "definitionPath": "components/popover/popover.js"
        }
      ],
      "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/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"
            }
          ],
          "slots": [
            {
              "description": "The radio's label.",
              "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>`, placed after the label. Only rendered when `appearance` is `button`.",
              "name": "end"
            }
          ],
          "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'",
              "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": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "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'"
              },
              "default": "'default'",
              "description": "The radio's visual appearance.",
              "attribute": "appearance",
              "reflects": true
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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,
              "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"
              },
              "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "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"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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'"
              },
              "default": "'default'",
              "description": "The radio's visual appearance.",
              "fieldName": "appearance"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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",
              "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": "Radios allow the user to select a single option from a group.",
          "jsDoc": "/**\n * @summary Radios allow the user to select a single option from a group.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/radio\n * @status experimental\n * @since 1.0\n * @playwright getByRole('radio', { name: '…' })\n *\n * @dependency ed-icon\n *\n * @slot - The radio's label.\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>`, placed after the label. Only rendered when `appearance` is `button`.\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 *\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",
          "since": "1.0",
          "playwright": "getByRole('radio', { name: '…' })",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-radio",
          "customElement": true,
          "modulePath": "components/radio/radio.js",
          "definitionPath": "components/radio/radio.js"
        }
      ],
      "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/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,
              "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
            },
            {
              "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'"
              },
              "default": "'default'",
              "description": "Changes the visual appearance to segmented controls.",
              "attribute": "appearance",
              "reflects": true
            },
            {
              "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\nSet alongside `aria-labelledby` rather than instead of it: accessible-name computation consults\naria-labelledby first, so a visible label keeps winning without either side having to know.",
              "attribute": "aria-label",
              "reflects": true
            },
            {
              "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` and the `data-ed-radio-*`\nattributes 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,
              "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']>"
                  }
                }
              ],
              "type": {
                "text": "formResetCallback(args: Parameters<EdFormAssociatedElement['formResetCallback']>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setValue(args: Parameters<EdFormAssociatedElement['setValue']>) => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "focus(options?: FocusOptions) => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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'",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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",
              "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"
            },
            {
              "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'"
              },
              "default": "'default'",
              "description": "Changes the visual appearance to segmented controls.",
              "fieldName": "appearance"
            },
            {
              "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\nSet alongside `aria-labelledby` rather than instead of it: accessible-name computation consults\naria-labelledby first, so a visible label keeps winning without either side having to know.",
              "fieldName": "ariaLabel"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('radio', { name: '…' })\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('radio', { name: '…' })",
          "dependencies": [
            "ed-radio"
          ],
          "tagName": "ed-radio-group",
          "customElement": true,
          "modulePath": "components/radio-group/radio-group.js",
          "definitionPath": "components/radio-group/radio-group.js"
        }
      ],
      "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": "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @since 1.0\n * @playwright getByRole('heading', { name: '…' })\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",
          "since": "1.0",
          "playwright": "getByRole('heading', { name: '…' })",
          "tagName": "ed-side-menu-title",
          "customElement": true,
          "modulePath": "components/side-menu-title/side-menu-title.js",
          "definitionPath": "components/side-menu-title/side-menu-title.js",
          "cssStates": [],
          "events": []
        }
      ],
      "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"
            }
          ],
          "slots": [
            {
              "description": "The default slot for `ed-side-menu-item` elements.",
              "name": ""
            },
            {
              "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')"
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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."
            },
            {
              "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": "handleDefaultSlotChange",
              "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.",
              "type": {
                "text": "setCurrent(value: string) => void"
              }
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('navigation')\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 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 *\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('navigation')",
          "dependencies": [
            "ed-input",
            "ed-side-menu-item",
            "ed-side-menu-title"
          ],
          "tagName": "ed-side-menu",
          "customElement": true,
          "modulePath": "components/side-menu/side-menu.js",
          "definitionPath": "components/side-menu/side-menu.js",
          "cssStates": []
        }
      ],
      "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"
            },
            {
              "kind": "field",
              "name": "mediumQuery",
              "type": {
                "text": "MediaQueryList | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "overlayRegistered",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hoverCloseTimer",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "hoverOpenTimer",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "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."
            },
            {
              "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": "panelOpen",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether the panel is open. Reflects silently — setting the property emits no events;\nuse `showPanel()`/`hidePanel()`/`togglePanel()` to get `ed-show`/`ed-hide`.\nIgnored on the compact view.",
              "attribute": "panel-open",
              "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.",
              "type": {
                "text": "showPanel() => void"
              }
            },
            {
              "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().",
              "type": {
                "text": "hidePanel() => void"
              }
            },
            {
              "kind": "method",
              "name": "togglePanel",
              "type": {
                "text": "togglePanel() => void"
              }
            },
            {
              "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."
            },
            {
              "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).",
              "type": {
                "text": "setCurrent(value: string) => void"
              }
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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-open",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether the panel is open. Reflects silently — setting the property emits no events;\nuse `showPanel()`/`hidePanel()`/`togglePanel()` to get `ed-show`/`ed-hide`.\nIgnored on the compact view.",
              "fieldName": "panelOpen"
            },
            {
              "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": "An M3-style 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 An M3-style 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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon",
            "ed-side-menu",
            "ed-side-menu-item"
          ],
          "tagName": "ed-rail-menu",
          "customElement": true,
          "modulePath": "components/rail-menu/rail-menu.js",
          "definitionPath": "components/rail-menu/rail-menu.js"
        }
      ],
      "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,
              "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",
              "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",
              "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
            },
            {
              "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",
              "type": {
                "text": "formResetCallback() => void"
              }
            },
            {
              "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'",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "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"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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",
              "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",
              "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",
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('slider')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('slider')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-rating",
          "customElement": true,
          "modulePath": "components/rating/rating.js",
          "definitionPath": "components/rating/rating.js"
        }
      ],
      "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"
            },
            {
              "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` to render\nnothing.\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"
            },
            {
              "kind": "field",
              "name": "format",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'long'",
              "description": "The formatting style to use.",
              "attribute": "format"
            },
            {
              "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"
            },
            {
              "kind": "field",
              "name": "sync",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Keep the displayed value up to date as time passes.",
              "attribute": "sync"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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` to render\nnothing.\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"
            },
            {
              "name": "format",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'long'",
              "description": "The formatting style to use.",
              "fieldName": "format"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…')\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/relative-time",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-relative-time",
          "customElement": true,
          "modulePath": "components/relative-time/relative-time.js",
          "definitionPath": "components/relative-time/relative-time.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": [],
          "events": [],
          "slots": []
        }
      ],
      "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-resize-observer",
          "customElement": true,
          "modulePath": "components/resize-observer/resize-observer.js",
          "definitionPath": "components/resize-observer/resize-observer.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": []
        }
      ],
      "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"
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('region')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('region')",
          "tagName": "ed-scroller",
          "customElement": true,
          "modulePath": "components/scroller/scroller.js",
          "definitionPath": "components/scroller/scroller.js",
          "cssStates": [],
          "events": []
        }
      ],
      "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @since 1.0\n * @playwright getByRole('listitem', { name: '…' })\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",
          "since": "1.0",
          "playwright": "getByRole('listitem', { name: '…' })",
          "tagName": "ed-scrollspy-item",
          "customElement": true,
          "modulePath": "components/scrollspy-item/scrollspy-item.js",
          "definitionPath": "components/scrollspy-item/scrollspy-item.js",
          "cssProperties": [],
          "events": []
        }
      ],
      "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"
            },
            {
              "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
            },
            {
              "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."
            },
            {
              "kind": "field",
              "name": "rafId",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Last RAF id from the throttled recompute."
            },
            {
              "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."
            },
            {
              "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.",
              "type": {
                "text": "recomputeActive() => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "scrollToId(id: string) => void"
              }
            },
            {
              "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": "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('navigation')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('navigation')",
          "dependencies": [
            "ed-scrollspy-item"
          ],
          "tagName": "ed-scrollspy",
          "customElement": true,
          "modulePath": "components/scrollspy/scrollspy.js",
          "definitionPath": "components/scrollspy/scrollspy.js",
          "cssProperties": [],
          "cssStates": []
        },
        {
          "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": "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"
            },
            {
              "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
            },
            {
              "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"
            },
            {
              "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
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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 reposition them.",
          "jsDoc": "/**\n * @summary Split panels display two adjacent panels, allowing the user to reposition them.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/split-panel\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('separator')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('separator')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-split-panel",
          "customElement": true,
          "modulePath": "components/split-panel/split-panel.js",
          "definitionPath": "components/split-panel/split-panel.js",
          "cssStates": []
        }
      ],
      "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/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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @since 1.0\n * @playwright getByRole('tab', { name: '…' })\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",
          "since": "1.0",
          "playwright": "getByRole('tab', { name: '…' })",
          "dependencies": [
            "ed-icon",
            "ed-button"
          ],
          "tagName": "ed-tab",
          "customElement": true,
          "modulePath": "components/tab/tab.js",
          "definitionPath": "components/tab/tab.js",
          "cssProperties": [],
          "cssStates": []
        }
      ],
      "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": "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('tabpanel')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('tabpanel')",
          "tagName": "ed-tab-panel",
          "customElement": true,
          "modulePath": "components/tab-panel/tab-panel.js",
          "definitionPath": "components/tab-panel/tab-panel.js",
          "cssProperties": [],
          "cssStates": [],
          "events": []
        }
      ],
      "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"
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "intersectionObserver",
              "type": {
                "text": "IntersectionObserver | undefined"
              },
              "privacy": "private"
            },
            {
              "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
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'plain' | 'outlined' | 'filled'"
              },
              "default": "'plain'",
              "description": "The visual appearance of the tab group.",
              "attribute": "appearance",
              "reflects": true
            },
            {
              "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"
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "name": "appearance",
              "type": {
                "text": "'plain' | 'outlined' | 'filled'"
              },
              "default": "'plain'",
              "description": "The visual appearance of the tab group.",
              "fieldName": "appearance"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('tablist')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('tablist')",
          "dependencies": [
            "ed-button",
            "ed-icon",
            "ed-tab",
            "ed-tab-panel"
          ],
          "tagName": "ed-tab-group",
          "customElement": true,
          "modulePath": "components/tab-group/tab-group.js",
          "definitionPath": "components/tab-group/tab-group.js",
          "cssProperties": []
        }
      ],
      "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/table-body/table-body.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTableBody",
          "slots": [
            {
              "description": "The body rows. Must be `<ed-table-row>` elements.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "Groups body rows in an ed-table.",
          "jsDoc": "/**\n * @summary Groups body rows in an ed-table.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table\n * @status experimental\n * @since 1.0\n * @playwright getByRole('rowgroup')\n *\n * @dependency ed-table-row\n *\n * @slot - The body rows. Must be `<ed-table-row>` elements.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByRole('rowgroup')",
          "dependencies": [
            "ed-table-row"
          ],
          "tagName": "ed-table-body",
          "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"
              }
            }
          ],
          "modulePath": "components/table-body/table-body.js",
          "definitionPath": "components/table-body/table-body.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": [],
          "events": []
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTableBody",
            "module": "components/table-body/table-body.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-table-body",
          "declaration": {
            "name": "EdTableBody",
            "module": "components/table-body/table-body.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/table-head/table-head.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTableHead",
          "slots": [
            {
              "description": "The header rows. Must be `<ed-table-row>` elements.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "Groups header rows in an ed-table. Marks child rows as header rows.",
          "jsDoc": "/**\n * @summary Groups header rows in an ed-table. Marks child rows as header rows.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table\n * @status experimental\n * @since 1.0\n * @playwright getByRole('rowgroup')\n *\n * @dependency ed-table-row\n *\n * @slot - The header rows. Must be `<ed-table-row>` elements.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByRole('rowgroup')",
          "dependencies": [
            "ed-table-row"
          ],
          "tagName": "ed-table-head",
          "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"
              }
            }
          ],
          "modulePath": "components/table-head/table-head.js",
          "definitionPath": "components/table-head/table-head.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": [],
          "events": []
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTableHead",
            "module": "components/table-head/table-head.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-table-head",
          "declaration": {
            "name": "EdTableHead",
            "module": "components/table-head/table-head.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/table/table.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTable",
          "cssProperties": [
            {
              "description": "Overwrites the density attribute for manual row height adjustment. Unset, each cell falls back to its density: `var(--ed-size-6)` compact, `var(--ed-size-8)` default, `var(--ed-size-12)` spacious — so there is no single default to state here. The border is added on top of whatever this resolves to.",
              "name": "--ed-table-row-height"
            }
          ],
          "slots": [
            {
              "description": "Table sections. Must be `<ed-table-head>` and/or `<ed-table-body>` elements.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "sortable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables column sorting.",
              "attribute": "sortable"
            },
            {
              "kind": "field",
              "name": "sortMode",
              "type": {
                "text": "'single' | 'multi'"
              },
              "default": "'single'",
              "description": "Sort mode. `'single'` allows one column at a time; `'multi'` allows Shift+click for multi-column sort.",
              "attribute": "sort-mode"
            },
            {
              "kind": "field",
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables row selection mode.",
              "attribute": "selectable"
            },
            {
              "kind": "field",
              "name": "selectionMode",
              "type": {
                "text": "'single' | 'multi'"
              },
              "default": "'single'",
              "description": "Selection mode. `'single'` allows one row at a time; `'multi'` allows range/toggle selection.",
              "attribute": "selection-mode"
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls row density (padding).",
              "attribute": "density"
            },
            {
              "kind": "field",
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes all columns resizable. For per-column control, omit this and set `resizable` on individual `ed-table-cell` elements.",
              "attribute": "resizable"
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "headerCheckbox",
              "type": {
                "text": "EdCheckbox | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "isSyncingSelection",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "selectionGroupName",
              "privacy": "private",
              "default": "`ed-table-selection-${(selectionGroupCounter += 1)}`"
            },
            {
              "kind": "field",
              "name": "pendingPinRaf",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "syncPending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isScrolling",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "scrollEndTimer",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "spanningActive",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "childrenReady",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True once every TABLE_CHILD_TAGS element is upgraded; gates all child-touching sync work."
            },
            {
              "kind": "field",
              "name": "gridSort",
              "privacy": "private",
              "default": "new GridSortController(this, { onSort: (sorts, added) => { // `ed-sort` is cancelable, and returning false keeps the controller from applying the new // sort state — so a consumer's preventDefault() actually vetoes the sort instead of being // silently ignored. Same contract as ed-data-grid. return this.dispatchEvent(new EdSortEvent({ sorts, added })); } })"
            },
            {
              "kind": "field",
              "name": "gridSelection",
              "privacy": "private",
              "default": "new GridSelectionController(this, { // ed-table renders every row, so the absolute index is the DOM index into // getBodyRows() and the row element itself is the selection key. getRowKey: index => this.getBodyRows()[index], getAllRowKeys: () => this.getBodyRows(), getRowKeysInRange: (start, end) => this.getBodyRows().slice(start, end + 1), onSelectionChange: keys => { const bodyRows = this.getBodyRows(); for (const row of bodyRows) { row.selected = keys.has(row); } this.syncSelectionState(); const selection = bodyRows.filter(r => r.selected); this.dispatchEvent(new EdSelectionChangeEvent({ selection })); } })"
            },
            {
              "kind": "field",
              "name": "gridResize",
              "privacy": "private",
              "default": "new GridResizeController(this, { getColumnKey: cell => (cell as EdTableCell).getSortKey(), onResize: (column, width) => { this.dispatchEvent(new EdColumnResizeEvent({ column, width })); } })"
            },
            {
              "kind": "method",
              "name": "getRows",
              "return": {
                "type": {
                  "text": "EdTableRow[]"
                }
              },
              "type": {
                "text": "getRows() => EdTableRow[]"
              }
            },
            {
              "kind": "method",
              "name": "getBodyRows",
              "return": {
                "type": {
                  "text": "EdTableRow[]"
                }
              },
              "type": {
                "text": "getBodyRows() => EdTableRow[]"
              }
            },
            {
              "kind": "method",
              "name": "getHeaderRows",
              "return": {
                "type": {
                  "text": "EdTableRow[]"
                }
              },
              "type": {
                "text": "getHeaderRows() => EdTableRow[]"
              }
            },
            {
              "kind": "method",
              "name": "getCells",
              "return": {
                "type": {
                  "text": "EdTableCell[]"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "EdTableRow"
                  }
                }
              ],
              "type": {
                "text": "getCells(row: EdTableRow) => EdTableCell[]"
              }
            },
            {
              "kind": "method",
              "name": "getHeaderCells",
              "return": {
                "type": {
                  "text": "EdTableCell[]"
                }
              },
              "type": {
                "text": "getHeaderCells() => EdTableCell[]"
              }
            },
            {
              "kind": "method",
              "name": "getScrollContainer",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "type": {
                "text": "getScrollContainer() => HTMLElement | null"
              }
            },
            {
              "kind": "method",
              "name": "getColumnCount",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "type": {
                "text": "getColumnCount() => number"
              }
            },
            {
              "kind": "method",
              "name": "getSelectedRows",
              "return": {
                "type": {
                  "text": "EdTableRow[]"
                }
              },
              "description": "Returns the currently selected rows.",
              "type": {
                "text": "getSelectedRows() => EdTableRow[]"
              }
            },
            {
              "kind": "method",
              "name": "clearSelection",
              "description": "Deselects all rows.",
              "type": {
                "text": "clearSelection() => void"
              }
            },
            {
              "kind": "method",
              "name": "selectAll",
              "description": "Selects all body rows (multi-select mode only).",
              "type": {
                "text": "selectAll() => void"
              }
            },
            {
              "kind": "method",
              "name": "childElementsDefined",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "True once every child element the table drives (TABLE_CHILD_TAGS) is defined/upgraded."
            },
            {
              "kind": "method",
              "name": "scheduleSyncTable",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncTable",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isInjectedCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "c",
                  "type": {
                    "text": "EdTableCell"
                  }
                }
              ],
              "description": "Returns true if a cell was injected by the table (checkbox or spacer)."
            },
            {
              "kind": "method",
              "name": "syncSpanning",
              "privacy": "private",
              "description": "Detects header cells with colspan/rowspan > 1 and switches the entire table\nto CSS Grid with subgrid so that spanning actually works. Native table layout\nonly supports colspan/rowspan on <td>/<th>, not on custom elements."
            },
            {
              "kind": "method",
              "name": "applyGridLayout",
              "privacy": "private",
              "parameters": [
                {
                  "name": "head",
                  "type": {
                    "text": "EdTableHead"
                  }
                },
                {
                  "name": "headerRows",
                  "type": {
                    "text": "EdTableRow[]"
                  }
                }
              ],
              "description": "Switches table, head, and body to CSS Grid with subgrid column tracks."
            },
            {
              "kind": "method",
              "name": "styleSpanningHeaders",
              "privacy": "private",
              "parameters": [
                {
                  "name": "headerRows",
                  "type": {
                    "text": "EdTableRow[]"
                  }
                }
              ],
              "description": "Computes grid-column positions and applies spans, borders, and backgrounds to header cells."
            },
            {
              "kind": "method",
              "name": "cleanupGridMode",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "anyColumnResizable",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether any column has resizable enabled (table-level or per-column).",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "syncSelectionControls",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "injectCheckboxCells",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeCheckboxCells",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "injectRadioInputs",
              "privacy": "private",
              "description": "Injects one visually-hidden real radio per body row for single-select. The radios share a\nper-instance group name, so native radio-group keyboard behavior (Tab to enter, Arrow to move,\nSpace to select) drives selection. The row is the only visible indicator (see table-row styles)."
            },
            {
              "kind": "method",
              "name": "removeRadioInputs",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getRowLabelCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdTableCell | null"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "EdTableRow"
                  }
                }
              ],
              "description": "The first data cell of a row — hosts the hidden single-select radio and supplies its label."
            },
            {
              "kind": "method",
              "name": "handleSelectAllChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleCheckboxChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "EdTableRow"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncSelectionState",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncHeaderCheckboxState",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncResizableColumns",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "scheduleColumnWidthPinning",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "cancelColumnWidthPinning",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "injectSpacerCells",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeSpacerCells",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "pinColumnWidths",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "unpinColumnWidths",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncAriaAttributes",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncRowIndices",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "propagateSelectable",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "propagateDensity",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "propagateResizable",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncVisibility",
              "privacy": "private",
              "description": "Propagates `hidden` from header cells to their corresponding body cells."
            },
            {
              "kind": "method",
              "name": "propagateSortable",
              "privacy": "private",
              "description": "Propagates table-level `sortable` to the leaf header cells."
            },
            {
              "kind": "method",
              "name": "isSortableColumn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "EdTableCell"
                  }
                }
              ],
              "description": "Whether a header cell is a column the table can sort by. A spanning header is a group, and its\nlabel names no column in the data, so table-level `sortable` never reaches it.\n\nThe `colspan` test is the one `ed-table-cell.updateSortableTabStop()` already uses to hand out\nthe tab stop; sharing it is what keeps pointer and keyboard from disagreeing about what is\nsortable."
            },
            {
              "kind": "method",
              "name": "syncSortState",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSort",
              "privacy": "private",
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "EdTableCell"
                  }
                },
                {
                  "name": "shiftKey",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDblClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleKeydown",
              "privacy": "private",
              "description": "Enter/Space on a focused sortable header cell triggers a sort (Shift = multi-sort when\n`sort-mode=\"multi\"`). We only act when the cell host itself is the event target — interactive\ncontent slotted into a cell (buttons, links, checkboxes) keeps its native keyboard behavior."
            },
            {
              "kind": "field",
              "name": "handleScrollEvents",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getHead",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdTableHead | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "getBody",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdTableBody | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "{ sorts: Array<{column: string, ordering: string}>, added?: {column: string, ordering: string} }"
              },
              "description": "Emitted when a sortable column header is activated. Consumers handle sorting. Cancelable; calling `preventDefault()` leaves the sort unchanged.",
              "name": "ed-sort",
              "reactName": "onEdSort",
              "eventName": "EdSortEvent"
            },
            {
              "type": {
                "text": "{ selection: EdTableRow[] }"
              },
              "description": "Emitted when row selection changes.",
              "name": "ed-selection-change",
              "reactName": "onEdSelectionChange",
              "eventName": "EdSelectionChangeEvent"
            },
            {
              "type": {
                "text": "{ column: string, width: number }"
              },
              "description": "Emitted when a column is resized via drag handle.",
              "name": "ed-column-resize",
              "reactName": "onEdColumnResize",
              "eventName": "EdColumnResizeEvent"
            },
            {
              "type": {
                "text": "{ row: HTMLElement, rowIndex: number }"
              },
              "description": "Emitted on row double-click.",
              "name": "ed-row-dblclick",
              "reactName": "onEdRowDblclick",
              "eventName": "EdRowDblclickEvent"
            },
            {
              "type": {
                "text": "{ scrollTop: number, scrollLeft: number }"
              },
              "description": "Emitted when scrolling begins.",
              "name": "ed-scroll-start",
              "reactName": "onEdScrollStart",
              "eventName": "EdScrollStartEvent"
            },
            {
              "type": {
                "text": "{ scrollTop: number, scrollLeft: number }"
              },
              "description": "Emitted when scrolling ends.",
              "name": "ed-scroll-end",
              "reactName": "onEdScrollEnd",
              "eventName": "EdScrollEndEvent"
            }
          ],
          "attributes": [
            {
              "name": "sortable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables column sorting.",
              "fieldName": "sortable"
            },
            {
              "name": "sort-mode",
              "type": {
                "text": "'single' | 'multi'"
              },
              "default": "'single'",
              "description": "Sort mode. `'single'` allows one column at a time; `'multi'` allows Shift+click for multi-column sort.",
              "fieldName": "sortMode"
            },
            {
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables row selection mode.",
              "fieldName": "selectable"
            },
            {
              "name": "selection-mode",
              "type": {
                "text": "'single' | 'multi'"
              },
              "default": "'single'",
              "description": "Selection mode. `'single'` allows one row at a time; `'multi'` allows range/toggle selection.",
              "fieldName": "selectionMode"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls row density (padding).",
              "fieldName": "density"
            },
            {
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes all columns resizable. For per-column control, omit this and set `resizable` on individual `ed-table-cell` elements.",
              "fieldName": "resizable"
            },
            {
              "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 composable DOM-driven table component with sorting, selection, and column resizing.",
          "jsDoc": "/**\n * @summary A composable DOM-driven table component with sorting, selection, and column resizing.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('table')\n *\n * @dependency ed-table-head\n * @dependency ed-table-body\n * @dependency ed-table-row\n * @dependency ed-table-cell\n * @dependency ed-checkbox\n * @dependency ed-icon\n *\n * @event {{ sorts: Array<{column: string, ordering: string}>, added?: {column: string, ordering: string} }} ed-sort - Emitted when a sortable column header is activated. Consumers handle sorting.\n *  Cancelable; calling `preventDefault()` leaves the sort unchanged.\n * @event {{ selection: EdTableRow[] }} ed-selection-change - Emitted when row selection changes.\n * @event {{ column: string, width: number }} ed-column-resize - Emitted when a column is resized via drag handle.\n * @event {{ row: HTMLElement, rowIndex: number }} ed-row-dblclick - Emitted on row double-click.\n * @event {{ scrollTop: number, scrollLeft: number }} ed-scroll-start - Emitted when scrolling begins.\n * @event {{ scrollTop: number, scrollLeft: number }} ed-scroll-end - Emitted when scrolling ends.\n *\n * @cssproperty --ed-table-row-height - Overwrites the density attribute for manual row height adjustment. Unset, each\n *   cell falls back to its density: `var(--ed-size-6)` compact, `var(--ed-size-8)` default,\n *   `var(--ed-size-12)` spacious — so there is no single default to state here. The border is added on top of\n *   whatever this resolves to.\n *\n * @slot - Table sections. Must be `<ed-table-head>` and/or `<ed-table-body>` elements.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/table",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('table')",
          "dependencies": [
            "ed-table-head",
            "ed-table-body",
            "ed-table-row",
            "ed-table-cell",
            "ed-checkbox",
            "ed-icon"
          ],
          "tagName": "ed-table",
          "customElement": true,
          "modulePath": "components/table/table.js",
          "definitionPath": "components/table/table.js",
          "cssParts": [],
          "cssStates": []
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTable",
            "module": "components/table/table.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-table",
          "declaration": {
            "name": "EdTable",
            "module": "components/table/table.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"
            },
            {
              "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"
              },
              "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,
              "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
            },
            {
              "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
            },
            {
              "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
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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.",
              "type": {
                "text": "focus(options?: FocusOptions) => void"
              }
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the textarea.",
              "type": {
                "text": "blur() => void"
              }
            },
            {
              "kind": "method",
              "name": "select",
              "description": "Selects all the text in the textarea.",
              "type": {
                "text": "select() => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "scrollPosition(position?: { top?: number; left?: number }) => { top: number; left: number } | undefined"
              }
            },
            {
              "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).",
              "type": {
                "text": "setSelectionRange(selectionStart: number, selectionEnd: number, selectionDirection: 'forward' | 'backward' | 'none' = 'none') => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "setRangeText(replacement: string, start?: number, end?: number, selectMode: 'select' | 'start' | 'end' | 'preserve' = 'preserve') => void"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "type": {
                "text": "formResetCallback() => 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 remove the attribute to clear the error.",
              "attribute": "error",
              "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 remove the attribute to clear the warning.",
              "attribute": "warning",
              "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'",
              "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"
              },
              "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"
              },
              "type": {
                "text": "getForm() => void"
              }
            },
            {
              "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"
              },
              "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"
              },
              "type": {
                "text": "checkValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "reportValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "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"
              },
              "type": {
                "text": "setValidity(args: Parameters<typeof this.internals.setValidity>) => void"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setCustomStates() => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "setCustomValidity(message: string) => void"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "setValue(args: Parameters<typeof this.internals.setFormValue>) => void"
              }
            },
            {
              "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"
              },
              "type": {
                "text": "resetValidity() => void"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              },
              "type": {
                "text": "updateValidity() => void"
              }
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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",
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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"
            },
            {
              "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 remove the attribute to clear the error.",
              "fieldName": "error",
              "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 remove the attribute to clear the warning.",
              "fieldName": "warning",
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('textbox')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-textarea",
          "customElement": true,
          "modulePath": "components/textarea/textarea.js",
          "definitionPath": "components/textarea/textarea.js"
        }
      ],
      "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/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 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 badge.",
              "name": "--ed-toolbar-state-min-height",
              "default": "the height of an ed-badge"
            }
          ],
          "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 or opens a surface, including the button that opens a filter panel. 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 take effect immediately: context selectors, quick filters, view switches. Typically `<ed-select>` or `<ed-radio-group appearance=\"button\">`.",
              "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": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]', 'search', 'view', 'meta', 'filters')"
            },
            {
              "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\nThe attribute filter is what makes watching attributes safe at all: the measurement writes\n`data-ed-toolbar-overflowed` onto these same children, and an unfiltered observer would\ntrigger itself without end.\n\nIt does not see everything, which is why the menu also re-renders on `ed-show`. `@lit/react`\nassigns reactive properties rather than attributes (`create-component.js`: `node[name] = value`),\nand a property that does not reflect leaves no mutation record. `disabled` survives that —\n`EdFormAssociatedElement` writes the attribute on every update — but `ed-button.title` is a\nplain `@property` and does not, so a tooltip set from React would never reach its stand-in."
            },
            {
              "kind": "field",
              "name": "pendingUpdate",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "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": "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": "field",
              "name": "actions",
              "type": {
                "text": "HTMLElement[]"
              },
              "privacy": "private",
              "description": "Every element in the default slot, in document order, minus the ones the consumer has hidden.\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.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleActionsSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "scheduleOverflowUpdate",
              "privacy": "private",
              "description": "Collapses a burst of notifications into one measurement per frame. Both 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 reads and\nthe writes are separated so the browser lays out once: measure first, then set the attributes.\nThe leading action never moves — a bar whose first action disappears leaves the user with a\nmenu and no visible verb."
            },
            {
              "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": "method",
              "name": "updateLineBreak",
              "privacy": "private",
              "parameters": [
                {
                  "name": "controls",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "hasActions",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "leadingAction",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "menuNeeded",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Decides how far the control row has to break apart, given what the actions need. Runs even when\nthere are no actions at all: a bar of search and view controls alone still runs out of room,\nand without this the reset would be the last thing that ever touched the attribute."
            },
            {
              "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": "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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 * @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 *\n * @slot - Actions: anything that acts or opens a surface, including the button that opens a filter\n *   panel. 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 take effect immediately: context selectors, quick filters, view\n *   switches. Typically `<ed-select>` or `<ed-radio-group appearance=\"button\">`.\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 an ed-badge] - The minimum height of the\n *   state row. It keeps the content below from shifting when the last filter is removed **and a\n *   counter remains** — with no counter the row is empty and collapses entirely, which is intended.\n *   Raise it when the row holds something taller than a badge.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toolbar",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-dropdown",
            "ed-dropdown-item",
            "ed-divider",
            "ed-icon"
          ],
          "tagName": "ed-toolbar",
          "customElement": true,
          "modulePath": "components/toolbar/toolbar.js",
          "definitionPath": "components/toolbar/toolbar.js",
          "cssStates": [],
          "events": []
        }
      ],
      "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/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"
            },
            {
              "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
            },
            {
              "kind": "field",
              "name": "lastFocusedItem",
              "type": {
                "text": "EdTreeItem | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "clickTarget",
              "type": {
                "text": "EdTreeItem | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "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"
                  }
                }
              ],
              "type": {
                "text": "handleMouseDown(event: MouseEvent) => void"
              }
            },
            {
              "kind": "field",
              "name": "handleFocusOut",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFocusIn",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('tree')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('tree')",
          "dependencies": [
            "ed-tree-item"
          ],
          "tagName": "ed-tree",
          "customElement": true,
          "modulePath": "components/tree/tree.js",
          "definitionPath": "components/tree/tree.js",
          "cssStates": []
        }
      ],
      "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"
            },
            {
              "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"
            },
            {
              "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": "Record<string, string> | {  }"
              }
            },
            {
              "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.",
              "type": {
                "text": "retryFile(name: string) => void"
              }
            },
            {
              "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.",
              "type": {
                "text": "removeFile(name: string) => void"
              }
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "name",
              "type": {
                "text": "EdUploadErrorEvent"
              },
              "reactName": "onName",
              "eventName": "NameEvent"
            },
            {
              "name": "done",
              "type": {
                "text": "EdUploadFinishedEvent"
              },
              "reactName": "onDone",
              "eventName": "DoneEvent"
            },
            {
              "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",
              "parsedType": {
                "text": "{ name: string, reason: 'too-large' | 'too-many' | 'type' | 'total-exceeded' | 'network' | 'http' | 'duplicate' }"
              },
              "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"
            },
            {
              "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"
            },
            {
              "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 * @since 1.0\n * @playwright getByTestId('…').getByRole('button')\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",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('button')",
          "dependencies": [
            "ed-button",
            "ed-icon",
            "ed-progress-bar"
          ],
          "tagName": "ed-upload",
          "customElement": true,
          "modulePath": "components/upload/upload.js",
          "definitionPath": "components/upload/upload.js",
          "cssStates": [],
          "slots": []
        }
      ],
      "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-step/wizard-step.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWizardStep",
          "cssParts": [
            {
              "description": "The wrapper of the step.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The wizard step's content. Add the `autofocus` attribute to a control here to move focus to it when the step becomes active.",
              "name": ""
            },
            {
              "description": "The label of the Step. The label will be shown on the stepper. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Place an `<ed-icon>` here to show an icon instead of the default numeric value.",
              "name": "icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The wizard step's label. If you need to display HTML, use the label slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The wizard step's label. If you need to display HTML, use the label slot instead.",
              "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": "A wizard step represents the label, an optional icon and the content of a step within a wizard.",
          "jsDoc": "/**\n * @summary A wizard step represents the label, an optional icon and the content of a step within a wizard.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard-step\n * @status experimental\n * @since 1.0\n * @playwright getByRole('tabpanel')\n *\n * @slot - The wizard step's content. Add the `autofocus` attribute to a control here to move focus to it when the step becomes active.\n * @slot label - The label of the Step. The label will be shown on the stepper. Alternatively, you can use the `label` attribute.\n * @slot icon - Place an `<ed-icon>` here to show an icon instead of the default numeric value.\n *\n * @csspart base - The wrapper of the step.\n\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard-step",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByRole('tabpanel')",
          "tagName": "ed-wizard-step",
          "customElement": true,
          "modulePath": "components/wizard-step/wizard-step.js",
          "definitionPath": "components/wizard-step/wizard-step.js",
          "cssProperties": [],
          "cssStates": []
        }
      ],
      "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": "components/wizard/wizard.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWizard",
          "cssProperties": [
            {
              "description": "The diameter of a step's circle. The rendered size is at least 1.5em, so the circle never becomes smaller than the number it holds.",
              "name": "--ed-wizard-size",
              "default": "var(--ed-space-6)"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The wrapper of all steps.",
              "name": "progress-panel"
            },
            {
              "description": "The wrapper of a single step inside the progress panel.",
              "name": "step"
            },
            {
              "description": "The wrapper of the upper part of the step, contains connectors and the button but not the label.",
              "name": "step-top"
            },
            {
              "description": "The step button .",
              "name": "button"
            },
            {
              "description": "The connector before the button.",
              "name": "connector-before"
            },
            {
              "description": "The connector after the button.",
              "name": "connector-after"
            },
            {
              "description": "The wrapper of the label.",
              "name": "label"
            },
            {
              "description": "The wrapper of the content.",
              "name": "content"
            },
            {
              "description": "The wrapper of Navigation.",
              "name": "nav"
            },
            {
              "description": "The reset button",
              "name": "reset"
            },
            {
              "description": "The previous button",
              "name": "previous"
            },
            {
              "description": "The next button",
              "name": "next"
            }
          ],
          "slots": [
            {
              "description": "Place `<ed-wizard-step>` elements inside.",
              "name": ""
            },
            {
              "description": "Slot for the navigation, acts like a footer.",
              "name": "nav"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "activeStep",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Index of the active step (0-based).",
              "attribute": "active-step",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "scrollToTop",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Scroll to top after step changing.",
              "attribute": "scroll-to-top",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "stepNavigation",
              "type": {
                "text": "'none' | 'seen' | 'all'"
              },
              "default": "'seen'",
              "description": "Controls whether users can jump to steps via the step indicators.\n\n- `none`: step indicators are not interactive\n- `seen`: users may jump only to steps with index <= maxSeenStep\n- `all`: users may jump to any step",
              "attribute": "step-navigation",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "navigation",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the default navigation in the nav slot",
              "attribute": "navigation",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "allowReset",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, shows the default reset button inside the navigation. Navigation must be enabled to make this button work",
              "attribute": "allow-reset",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "nextDisabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, disables the next button. Use this to prevent advancing until consumer validation passes.",
              "attribute": "next-disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "previousDisabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, disables the previous button. Use this to prevent going back while an async operation is in progress.",
              "attribute": "previous-disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Defines the orientation of the wizard",
              "attribute": "orientation",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "contentEl",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "steps",
              "type": {
                "text": "EdWizardStep[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "maxSeenStep",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "liveAnnouncement",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "Assistive-tech announcement for steps that have no focus target (e.g. text-only steps)."
            },
            {
              "kind": "field",
              "name": "firstUpdatePassed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Becomes true after the first render. The initial render — including a deep link via\n`active-step` — emits no public event and moves no focus; every later step change does both,\nwhether driven by the built-in navigation, custom nav, imperative methods, or a controlled\n`activeStep` (e.g. React)."
            },
            {
              "kind": "field",
              "name": "focusedTabIndex",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Index of the tab holding the roving tabindex while the user arrows through the tablist.\n`null` follows the selection, which is where the tab stop belongs on entry (APG, Tabs)."
            },
            {
              "kind": "field",
              "name": "localize",
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "onStepMetaChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "collectSteps",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#generatedIdBase",
              "privacy": "private",
              "description": "Generated fallback for id-less hosts, so multiple wizards never share step/tab ids."
            },
            {
              "kind": "method",
              "name": "wizardIdBase",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getStepLabelId",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getStepPanelId",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "#generatedStepIds",
              "privacy": "private",
              "default": "new WeakMap<EdWizardStep, string>()",
              "description": "The id this wizard last generated per step, so an author-set id is recognizable as not ours."
            },
            {
              "kind": "method",
              "name": "applyStepA11y",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isStepJumpAllowed",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "updateActiveVisibility",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "focusActivePanel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "announceStepChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "goToStep",
              "privacy": "public",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Set the active step to the given number",
              "type": {
                "text": "goToStep(index: number) => void"
              }
            },
            {
              "kind": "method",
              "name": "previous",
              "privacy": "public",
              "description": "Go to the previous step if possible",
              "type": {
                "text": "previous() => void"
              }
            },
            {
              "kind": "method",
              "name": "next",
              "privacy": "public",
              "description": "Go to the next step if possible",
              "type": {
                "text": "next() => void"
              }
            },
            {
              "kind": "method",
              "name": "reset",
              "description": "Resets the wizard to the first step",
              "type": {
                "text": "reset() => void"
              }
            },
            {
              "kind": "method",
              "name": "onTabClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "onTabKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "onTabActivateKey",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "stepCount",
              "description": "Total number of steps",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isFinished",
              "description": "True if the wizard is finished",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isFirstStep",
              "description": "True if the first step is active",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isLastStep",
              "description": "True if the last step is active",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "canGoPrevious",
              "description": "True if there is a previous step and it is not disabled by the consumer",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "canGoNext",
              "description": "True if there is a next step and it is not disabled by the consumer",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "canReset",
              "description": "True if the wizard can reset",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "visiblePanelIndex",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "selectedTabIndex",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "{ activeStep: number, stepCount: number, maxSeenStep: number, isFinished: boolean, canGoNext: boolean, canGoPrevious: boolean, canReset: boolean }"
              },
              "description": "Emitted when the active step changes.",
              "name": "ed-step-change",
              "reactName": "onEdStepChange",
              "eventName": "EdStepChangeEvent"
            },
            {
              "description": "Emitted when the last step is finished.",
              "name": "ed-wizard-finish",
              "reactName": "onEdWizardFinish",
              "eventName": "EdWizardFinishEvent"
            }
          ],
          "attributes": [
            {
              "name": "active-step",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Index of the active step (0-based).",
              "fieldName": "activeStep"
            },
            {
              "name": "scroll-to-top",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Scroll to top after step changing.",
              "fieldName": "scrollToTop"
            },
            {
              "name": "step-navigation",
              "type": {
                "text": "'none' | 'seen' | 'all'"
              },
              "default": "'seen'",
              "description": "Controls whether users can jump to steps via the step indicators.\n\n- `none`: step indicators are not interactive\n- `seen`: users may jump only to steps with index <= maxSeenStep\n- `all`: users may jump to any step",
              "fieldName": "stepNavigation"
            },
            {
              "name": "navigation",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the default navigation in the nav slot",
              "fieldName": "navigation"
            },
            {
              "name": "allow-reset",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, shows the default reset button inside the navigation. Navigation must be enabled to make this button work",
              "fieldName": "allowReset"
            },
            {
              "name": "next-disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, disables the next button. Use this to prevent advancing until consumer validation passes.",
              "fieldName": "nextDisabled"
            },
            {
              "name": "previous-disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, disables the previous button. Use this to prevent going back while an async operation is in progress.",
              "fieldName": "previousDisabled"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Defines the orientation of the wizard",
              "fieldName": "orientation"
            },
            {
              "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 step-by-step process to complete a task.",
          "jsDoc": "/**\n * @summary Guides users through a step-by-step process to complete a task.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard\n * @status experimental\n * @since 1.0\n * @playwright getByTestId('…').getByRole('tablist')\n *\n * @dependency ed-wizard-step\n * @dependency ed-button\n * @dependency ed-icon\n *\n * @event {{ activeStep: number, stepCount: number, maxSeenStep: number, isFinished: boolean, canGoNext: boolean, canGoPrevious: boolean, canReset: boolean }} ed-step-change - Emitted when the active step changes.\n * @event ed-wizard-finish - Emitted when the last step is finished.\n *\n * @slot - Place `<ed-wizard-step>` elements inside.\n * @slot nav - Slot for the navigation, acts like a footer.\n *\n * @cssproperty [--ed-wizard-size=var(--ed-space-6)] - The diameter of a step's circle. The rendered\n *   size is at least 1.5em, so the circle never becomes smaller than the number it holds.\n *\n * @csspart base - The component's base wrapper.\n * @csspart progress-panel - The wrapper of all steps.\n * @csspart step - The wrapper of a single step inside the progress panel.\n * @csspart step-top - The wrapper of the upper part of the step, contains connectors and the button but not the label.\n * @csspart button - The step button .\n * @csspart connector-before - The connector before the button.\n * @csspart connector-after - The connector after the button.\n * @csspart label - The wrapper of the label.\n * @csspart content - The wrapper of the content.\n * @csspart nav - The wrapper of Navigation.\n * @csspart reset - The reset button\n * @csspart previous - The previous button\n * @csspart next - The next button\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard",
          "status": "experimental",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('tablist')",
          "dependencies": [
            "ed-wizard-step",
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-wizard",
          "customElement": true,
          "modulePath": "components/wizard/wizard.js",
          "definitionPath": "components/wizard/wizard.js",
          "cssStates": []
        }
      ],
      "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": "allowfullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows fullscreen mode.",
              "attribute": "allowfullscreen"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "'eager' | 'lazy'"
              },
              "default": "'eager'",
              "description": "Controls iframe loading behavior.",
              "attribute": "loading"
            },
            {
              "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
            },
            {
              "kind": "field",
              "name": "contentDocument",
              "type": {
                "text": "Document | null"
              },
              "privacy": "public",
              "description": "Returns the internal iframe's `document` object. (Readonly property)",
              "readonly": true
            },
            {
              "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 `allow-same-origin` preserves that inheritance —\nso this one combination runs framed markup as the host application. There is no safe use for\nit with content the consumer did not author."
            },
            {
              "kind": "method",
              "name": "zoomIn",
              "privacy": "public",
              "description": "Zooms in to the next available zoom level.",
              "type": {
                "text": "zoomIn() => void"
              }
            },
            {
              "kind": "method",
              "name": "zoomOut",
              "privacy": "public",
              "description": "Zooms out to the previous available zoom level.",
              "type": {
                "text": "zoomOut() => void"
              }
            },
            {
              "kind": "method",
              "name": "handleLoad",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleError",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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": "allowfullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows fullscreen mode.",
              "fieldName": "allowfullscreen"
            },
            {
              "name": "loading",
              "type": {
                "text": "'eager' | 'lazy'"
              },
              "default": "'eager'",
              "description": "Controls iframe loading behavior.",
              "fieldName": "loading"
            },
            {
              "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 * @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",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-zoomable-frame",
          "customElement": true,
          "modulePath": "components/zoomable-frame/zoomable-frame.js",
          "definitionPath": "components/zoomable-frame/zoomable-frame.js",
          "cssProperties": [],
          "cssStates": []
        }
      ],
      "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": "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'"
            },
            {
              "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"
            },
            {
              "kind": "field",
              "name": "saveable",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "filesForEditor",
              "type": {
                "text": "PageEditorFile[] | undefined"
              },
              "privacy": "private"
            },
            {
              "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"
            },
            {
              "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": "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."
            },
            {
              "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."
            },
            {
              "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",
              "type": {
                "text": "close() => void"
              }
            },
            {
              "kind": "method",
              "name": "show",
              "privacy": "public",
              "description": "opens the edScan dialog",
              "type": {
                "text": "show() => void"
              }
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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. `event.detail` is the list of files saved before cancelling (`{ filename, filesize }[]`). 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": "edScan widget: upload, split and edit scanned files with AI-assisted suggestions.",
          "jsDoc": "/**\n * @summary edScan widget: upload, split and edit scanned files with AI-assisted suggestions.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/widgets/ed-scan\n * @status experimental\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. `event.detail` is the list of files saved before cancelling (`{ filename, filesize }[]`).\n *        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",
          "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,
          "modulePath": "widgets/ed-scan/ed-scan.js",
          "definitionPath": "widgets/ed-scan/ed-scan.js",
          "cssProperties": [],
          "cssParts": [],
          "cssStates": []
        }
      ],
      "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
            },
            {
              "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"
            },
            {
              "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": "field",
              "name": "#hasRecordedInitialProperties",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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"
            },
            {
              "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": "News widget to display release news or useful information to the user.",
          "jsDoc": "/**\n * @summary News widget to display release news or useful information to the user.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/widgets/news\n * @status experimental\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",
          "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,
          "modulePath": "widgets/news/news.js",
          "definitionPath": "widgets/news/news.js",
          "cssStates": [],
          "slots": []
        }
      ],
      "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"
          }
        }
      ]
    },
    {
      "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": "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/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": "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/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/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/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": "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": "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"
          }
        }
      ]
    }
  ],
  "package": {
    "name": "@eurodata/eurodata-ui",
    "description": "Eurodata library of web components.",
    "version": "0.25.0",
    "author": "Philipp Kimmlinger",
    "license": "MIT"
  }
}
