{
  "$schema": "https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json",
  "version": 1.1,
  "tags": [
    {
      "name": "ed-icon",
      "description": "Icons are symbols that can be used to represent various options within an application.\n---\n\n\n### **Events:**\n - **ed-icon-load** - Emitted when the icon has loaded. When using `spriteSheet: true` this will not emit.\n- **ed-error** - Emitted when the icon fails to load due to an error. When using `spriteSheet: true` this will not emit.\n\n### **CSS Parts:**\n - **svg** - The internal SVG element.\n- **use** - The `<use>` element generated when using `spriteSheet: true`",
      "attributes": [
        {
          "name": "name",
          "description": "The name of the icon to draw. Typed against the first-party libraries (`IconName` for\nthe default library, `EmptyStateIconName` for `emptyState`). When using a custom\nregistered library, cast the value (e.g. `name=${value as IconName}`).",
          "values": [
            { "name": "number" },
            { "name": "function" },
            { "name": "absence-wft" },
            { "name": "account" },
            { "name": "account_class" },
            { "name": "account_plan" },
            { "name": "active" },
            { "name": "add_circle" },
            { "name": "add_one" },
            { "name": "add_two" },
            { "name": "admin" },
            { "name": "admin_filled" },
            { "name": "admin_filled_crossed" },
            { "name": "alarm_clock" },
            { "name": "align_center" },
            { "name": "align_justify" },
            { "name": "align_left" },
            { "name": "align_right" },
            { "name": "anchor" },
            { "name": "android" },
            { "name": "apple" },
            { "name": "apple_logo" },
            { "name": "apple_logo_filled" },
            { "name": "approximately" },
            { "name": "aral" },
            { "name": "archive" },
            { "name": "attachment" },
            { "name": "average" },
            { "name": "average_filled" },
            { "name": "baby" },
            { "name": "backspace" },
            { "name": "backspace_filled" },
            { "name": "badge_check" },
            { "name": "badge_close" },
            { "name": "bag" },
            { "name": "bag_euro" },
            { "name": "balance_sheet" },
            { "name": "band_aid" },
            { "name": "band_aid_filled" },
            { "name": "bank_note" },
            { "name": "bank_notes" },
            { "name": "bank_notes_stack" },
            { "name": "bar_chart" },
            { "name": "bar_chart_10j" },
            { "name": "bar_chart_12m" },
            { "name": "bar_chart_13m" },
            { "name": "bar_chart_1j" },
            { "name": "battery" },
            { "name": "battery_0" },
            { "name": "battery_1" },
            { "name": "battery_2" },
            { "name": "battery_crossed" },
            { "name": "bed" },
            { "name": "beer" },
            { "name": "bird" },
            { "name": "birthday_cake" },
            { "name": "blocked" },
            { "name": "bluetooth" },
            { "name": "bold" },
            { "name": "book" },
            { "name": "book_open" },
            { "name": "bookmark" },
            { "name": "bookmark_filled" },
            { "name": "books" },
            { "name": "box" },
            { "name": "break-conflict" },
            { "name": "brush" },
            { "name": "building" },
            { "name": "building_bank" },
            { "name": "building_church" },
            { "name": "building_company" },
            { "name": "building_company_disabled" },
            { "name": "building_company_group" },
            { "name": "building_company_k" },
            { "name": "building_company_m" },
            { "name": "building_flag" },
            { "name": "building_shield_hero" },
            { "name": "building_store" },
            { "name": "building_water" },
            { "name": "business_card" },
            { "name": "cactus" },
            { "name": "cal" },
            { "name": "cal_1" },
            { "name": "cal_12" },
            { "name": "cal_1y" },
            { "name": "cal_31" },
            { "name": "cal_365" },
            { "name": "cal_7" },
            { "name": "cal_add_one" },
            { "name": "cal_average" },
            { "name": "cal_check" },
            { "name": "cal_clock" },
            { "name": "cal_close" },
            { "name": "cal_paragraph" },
            { "name": "cal_return" },
            { "name": "cal_select" },
            { "name": "calculate" },
            { "name": "camera" },
            { "name": "camera_video" },
            { "name": "canvas" },
            { "name": "car" },
            { "name": "car_filled" },
            { "name": "car_side" },
            { "name": "car_trade" },
            { "name": "car_wash" },
            { "name": "cash_register" },
            { "name": "cat" },
            { "name": "category" },
            { "name": "chart_pie" },
            { "name": "check" },
            { "name": "check_auto" },
            { "name": "check_circle" },
            { "name": "check_circle_filled" },
            { "name": "check_shield" },
            { "name": "check_shield_filled" },
            { "name": "checkbox" },
            { "name": "checkbox_active" },
            { "name": "checkbox_active_filled" },
            { "name": "checkbox_tristate" },
            { "name": "checklist" },
            { "name": "chick" },
            { "name": "christmas_star" },
            { "name": "cigarette" },
            { "name": "cigarette_crossed" },
            { "name": "circle_back" },
            { "name": "circle_dollar" },
            { "name": "circle_e" },
            { "name": "circle_euro" },
            { "name": "circle_euro_add" },
            { "name": "circle_euro_minus" },
            { "name": "circle_f" },
            { "name": "circle_k" },
            { "name": "circle_k_filled" },
            { "name": "circle_next" },
            { "name": "circle_r" },
            { "name": "circle_u" },
            { "name": "circle_u_filled" },
            { "name": "clear" },
            { "name": "clipboard_paper" },
            { "name": "clock" },
            { "name": "clock_add" },
            { "name": "clock_average" },
            { "name": "clock_filled" },
            { "name": "clock_hand" },
            { "name": "clock_pie" },
            { "name": "close" },
            { "name": "close_circle" },
            { "name": "close_circle_filled" },
            { "name": "close_fullscreen" },
            { "name": "cloud" },
            { "name": "cloud_download" },
            { "name": "cloud_filled" },
            { "name": "cloud_upload" },
            { "name": "cocktail" },
            { "name": "coffee" },
            { "name": "coffee_crossed" },
            { "name": "coffee_togo" },
            { "name": "coins" },
            { "name": "coins_euro" },
            { "name": "collapse" },
            { "name": "collapse_all" },
            { "name": "collect" },
            { "name": "compare" },
            { "name": "computer" },
            { "name": "conifer" },
            { "name": "construction" },
            { "name": "construction_worker" },
            { "name": "contacts" },
            { "name": "content_bottom_in" },
            { "name": "content_bottom_out" },
            { "name": "content_right_in" },
            { "name": "content_right_out" },
            { "name": "coocking_pot" },
            { "name": "cook" },
            { "name": "copy" },
            { "name": "copy_to_clipboard" },
            { "name": "couch" },
            { "name": "creditcard" },
            { "name": "crown-o" },
            { "name": "cut" },
            { "name": "cut_left" },
            { "name": "cut_up" },
            { "name": "cyclist" },
            { "name": "dashboard" },
            { "name": "debug" },
            { "name": "deer" },
            { "name": "delete" },
            { "name": "delete_permanent" },
            { "name": "delete_row" },
            { "name": "delete_undo" },
            { "name": "desk_bell" },
            { "name": "detailed-view" },
            { "name": "diamond" },
            { "name": "disc" },
            { "name": "divide" },
            { "name": "doctor_case" },
            { "name": "doctor_case_filled" },
            { "name": "dog" },
            { "name": "dollar" },
            { "name": "dove" },
            { "name": "down" },
            { "name": "down_end" },
            { "name": "down_left" },
            { "name": "down_right" },
            { "name": "download" },
            { "name": "download_filled_thick" },
            { "name": "download_thick" },
            { "name": "dragdrop" },
            { "name": "dragger" },
            { "name": "dumbbell" },
            { "name": "e_invoice" },
            { "name": "ed_arrow" },
            { "name": "edit" },
            { "name": "edit_filled" },
            { "name": "edit_list" },
            { "name": "eiffel_tower" },
            { "name": "elephant" },
            { "name": "elephant_2" },
            { "name": "employee-data" },
            { "name": "equal_boxed" },
            { "name": "eraser" },
            { "name": "etl_chatbot" },
            { "name": "euro" },
            { "name": "euro_user" },
            { "name": "evening" },
            { "name": "excel" },
            { "name": "exchange" },
            { "name": "expand" },
            { "name": "expand_all" },
            { "name": "export" },
            { "name": "external_link" },
            { "name": "eye" },
            { "name": "eye_crossed" },
            { "name": "favorite" },
            { "name": "favorite_filled" },
            { "name": "fax" },
            { "name": "ferris_wheel" },
            { "name": "field" },
            { "name": "file" },
            { "name": "filter" },
            { "name": "filter_filled" },
            { "name": "filter_remove" },
            { "name": "finish_flag" },
            { "name": "first" },
            { "name": "fish" },
            { "name": "fit_to_height" },
            { "name": "fit_to_width" },
            { "name": "flag" },
            { "name": "flag_filled" },
            { "name": "flame" },
            { "name": "flower" },
            { "name": "folder" },
            { "name": "folder_export" },
            { "name": "folder_open" },
            { "name": "form" },
            { "name": "forward" },
            { "name": "forward_filled" },
            { "name": "fullscreen" },
            { "name": "gamepad" },
            { "name": "gas_pump" },
            { "name": "gas_pump_add" },
            { "name": "gastronomy" },
            { "name": "ghost" },
            { "name": "ghost_filled" },
            { "name": "gift" },
            { "name": "glasses_antique" },
            { "name": "global" },
            { "name": "globe" },
            { "name": "gorilla" },
            { "name": "gps" },
            { "name": "grid" },
            { "name": "gripper_hor" },
            { "name": "gripper_vert" },
            { "name": "hand" },
            { "name": "hand_coins" },
            { "name": "hand_open" },
            { "name": "hand_shake" },
            { "name": "handles" },
            { "name": "hanger" },
            { "name": "headset" },
            { "name": "heart" },
            { "name": "heart_filled" },
            { "name": "help_circle" },
            { "name": "help_circle_filled" },
            { "name": "history" },
            { "name": "home" },
            { "name": "home_euro" },
            { "name": "home_filled" },
            { "name": "hospital" },
            { "name": "hot_air_balloon" },
            { "name": "hourglass" },
            { "name": "hourglass_bottom" },
            { "name": "hourglass_lock" },
            { "name": "hourglass_top" },
            { "name": "ice_creme" },
            { "name": "image" },
            { "name": "image_portrait" },
            { "name": "import" },
            { "name": "inbox" },
            { "name": "inbox_checked" },
            { "name": "inbox_in" },
            { "name": "inbox_out" },
            { "name": "inbox_page" },
            { "name": "info_circle" },
            { "name": "info_circle_filled" },
            { "name": "injection" },
            { "name": "invoice" },
            { "name": "invoice_edit" },
            { "name": "invoice_euro" },
            { "name": "invoice_filled" },
            { "name": "italic" },
            { "name": "java" },
            { "name": "jet" },
            { "name": "justice_hammer" },
            { "name": "kettle_grill" },
            { "name": "key" },
            { "name": "keyboard" },
            { "name": "last" },
            { "name": "layer" },
            { "name": "layer_1" },
            { "name": "layer_2" },
            { "name": "layer_3" },
            { "name": "left" },
            { "name": "left_end" },
            { "name": "left_right" },
            { "name": "lightbulb" },
            { "name": "lightning" },
            { "name": "line_chart" },
            { "name": "link" },
            { "name": "link_broken" },
            { "name": "linux" },
            { "name": "list_add" },
            { "name": "list_download" },
            { "name": "list_indented" },
            { "name": "local_community" },
            { "name": "locate" },
            { "name": "located_filled" },
            { "name": "location_circle" },
            { "name": "lock" },
            { "name": "login" },
            { "name": "logout" },
            { "name": "magic" },
            { "name": "mail" },
            { "name": "mail_forward" },
            { "name": "mail_new" },
            { "name": "mail_open" },
            { "name": "mail_question" },
            { "name": "mail_read" },
            { "name": "marker" },
            { "name": "marker_crossed" },
            { "name": "markers" },
            { "name": "maximise" },
            { "name": "megaphone" },
            { "name": "memory" },
            { "name": "menu" },
            { "name": "merge" },
            { "name": "message" },
            { "name": "message_dialog" },
            { "name": "message_edit" },
            { "name": "message_filled" },
            { "name": "message_question" },
            { "name": "message_warning" },
            { "name": "microphone" },
            { "name": "midday" },
            { "name": "miniature-view" },
            { "name": "minus" },
            { "name": "missing-employee-data" },
            { "name": "monitor" },
            { "name": "monochrome" },
            { "name": "moped" },
            { "name": "more" },
            { "name": "more_vert" },
            { "name": "morning" },
            { "name": "multiply" },
            { "name": "musical_notes" },
            { "name": "newsletter" },
            { "name": "next" },
            { "name": "next_entry" },
            { "name": "night" },
            { "name": "no_access" },
            { "name": "note" },
            { "name": "note_filled" },
            { "name": "notification" },
            { "name": "numbers" },
            { "name": "nurse" },
            { "name": "nut" },
            { "name": "office_chair" },
            { "name": "offline" },
            { "name": "online" },
            { "name": "open_in_window" },
            { "name": "page" },
            { "name": "page_1" },
            { "name": "page_2" },
            { "name": "page_add" },
            { "name": "page_chart_pie" },
            { "name": "page_check" },
            { "name": "page_check_addon" },
            { "name": "page_clock" },
            { "name": "page_contract" },
            { "name": "page_cover" },
            { "name": "page_crossed" },
            { "name": "page_csv" },
            { "name": "page_doc" },
            { "name": "page_document" },
            { "name": "page_document_filled" },
            { "name": "page_double" },
            { "name": "page_edit" },
            { "name": "page_eps" },
            { "name": "page_euro" },
            { "name": "page_exe" },
            { "name": "page_exlamation" },
            { "name": "page_image" },
            { "name": "page_lock" },
            { "name": "page_mp3" },
            { "name": "page_pdf" },
            { "name": "page_pdf_logo" },
            { "name": "page_png" },
            { "name": "page_rar" },
            { "name": "page_scroll" },
            { "name": "page_search" },
            { "name": "page_sepa" },
            { "name": "page_stack_check" },
            { "name": "page_tif" },
            { "name": "page_ttf" },
            { "name": "page_txt" },
            { "name": "page_xls" },
            { "name": "page_xml" },
            { "name": "paint_bucket" },
            { "name": "palm_tree" },
            { "name": "palm_tree_check" },
            { "name": "palm_tree_filled" },
            { "name": "paragraph" },
            { "name": "paragraph_lock" },
            { "name": "passive-time-recording-o" },
            { "name": "paste" },
            { "name": "pause" },
            { "name": "paypal" },
            { "name": "pending" },
            { "name": "pendulum" },
            { "name": "percent" },
            { "name": "personnel" },
            { "name": "phone" },
            { "name": "piggy_bank" },
            { "name": "pin" },
            { "name": "pin_filled" },
            { "name": "pizza" },
            { "name": "placeholder" },
            { "name": "play" },
            { "name": "plus" },
            { "name": "plus_minus" },
            { "name": "power" },
            { "name": "presentation" },
            { "name": "pretzel" },
            { "name": "previous" },
            { "name": "print" },
            { "name": "priority" },
            { "name": "profit" },
            { "name": "progress_seg" },
            { "name": "progress_seg_0" },
            { "name": "progress_seg_1" },
            { "name": "progress_seg_2" },
            { "name": "progress_seg_crossed" },
            { "name": "pumpkin" },
            { "name": "puzzle" },
            { "name": "quote" },
            { "name": "rabbit" },
            { "name": "radio" },
            { "name": "radio_active" },
            { "name": "record" },
            { "name": "rectangle_edit" },
            { "name": "red_cross" },
            { "name": "redo" },
            { "name": "refresh" },
            { "name": "repeat" },
            { "name": "repeat_square" },
            { "name": "report_euro" },
            { "name": "reset" },
            { "name": "restore" },
            { "name": "restore_square" },
            { "name": "results" },
            { "name": "return" },
            { "name": "return_right" },
            { "name": "right" },
            { "name": "right_end" },
            { "name": "road_closure" },
            { "name": "rocket" },
            { "name": "rotate_display" },
            { "name": "rotate_left" },
            { "name": "rotate_right" },
            { "name": "ruler" },
            { "name": "safe" },
            { "name": "sailboat" },
            { "name": "sale" },
            { "name": "satchel" },
            { "name": "satchel_filled" },
            { "name": "save" },
            { "name": "save_as" },
            { "name": "scale_justice" },
            { "name": "scan" },
            { "name": "scan_page" },
            { "name": "scanner" },
            { "name": "school_holiday" },
            { "name": "screw_nut" },
            { "name": "screw_nut_edit" },
            { "name": "screwdriver" },
            { "name": "screwer" },
            { "name": "script" },
            { "name": "search" },
            { "name": "send" },
            { "name": "server" },
            { "name": "settings" },
            { "name": "settings_auto" },
            { "name": "settings_gears" },
            { "name": "settings_slider" },
            { "name": "settings_square" },
            { "name": "share" },
            { "name": "shell" },
            { "name": "shield_hero" },
            { "name": "shift-overtime" },
            { "name": "shower" },
            { "name": "slot_maschine" },
            { "name": "smartphone_landscape" },
            { "name": "smartphone_portrait" },
            { "name": "snowflake" },
            { "name": "sort_alphabetical_ascending" },
            { "name": "sort_alphabetical_descending" },
            { "name": "sort_ascending" },
            { "name": "sort_descending" },
            { "name": "sort_numerical_ascending" },
            { "name": "sort_numerical_descending" },
            { "name": "sort_tree" },
            { "name": "sort_up" },
            { "name": "spartan" },
            { "name": "speedometer" },
            { "name": "split" },
            { "name": "split_button_arrow_down" },
            { "name": "split_vert" },
            { "name": "spy" },
            { "name": "square_1" },
            { "name": "square_2" },
            { "name": "stamp" },
            { "name": "star_double" },
            { "name": "stars" },
            { "name": "start" },
            { "name": "stethoscope" },
            { "name": "stop" },
            { "name": "stop_sign" },
            { "name": "stopwatch" },
            { "name": "stroller" },
            { "name": "structure" },
            { "name": "suitcase" },
            { "name": "sum" },
            { "name": "switch_vertical" },
            { "name": "table" },
            { "name": "table_add" },
            { "name": "table_remove" },
            { "name": "tablet_landscape" },
            { "name": "tablet_portrait" },
            { "name": "tag" },
            { "name": "tag_crossed" },
            { "name": "tag_euro" },
            { "name": "task-unassigned-o" },
            { "name": "tax_o" },
            { "name": "template" },
            { "name": "tennis_racket" },
            { "name": "test_tube" },
            { "name": "test_tube_liquid" },
            { "name": "text" },
            { "name": "thermostat_minus" },
            { "name": "thermostat_plus" },
            { "name": "thick_arrow_down" },
            { "name": "thick_arrow_left" },
            { "name": "thick_arrow_right" },
            { "name": "thick_arrow_up" },
            { "name": "thumbnails" },
            { "name": "ticket" },
            { "name": "tie" },
            { "name": "time_left" },
            { "name": "timeline" },
            { "name": "timeline-o" },
            { "name": "toilet" },
            { "name": "tools" },
            { "name": "tooth" },
            { "name": "trade" },
            { "name": "transfer" },
            { "name": "trolley" },
            { "name": "trolley_down" },
            { "name": "trolley_transport" },
            { "name": "truck" },
            { "name": "truck_clock" },
            { "name": "tv" },
            { "name": "tv_play" },
            { "name": "umbrella" },
            { "name": "underline" },
            { "name": "undo" },
            { "name": "unlock" },
            { "name": "unordered_list" },
            { "name": "unpaid" },
            { "name": "up" },
            { "name": "up_down" },
            { "name": "up_down_arrow" },
            { "name": "up_end" },
            { "name": "up_left" },
            { "name": "up_right" },
            { "name": "upload" },
            { "name": "user" },
            { "name": "user_add" },
            { "name": "user_add_circle" },
            { "name": "user_bag" },
            { "name": "user_check" },
            { "name": "user_circle" },
            { "name": "user_circle_filled" },
            { "name": "user_clock" },
            { "name": "user_disabled" },
            { "name": "user_edit" },
            { "name": "user_euro" },
            { "name": "user_filled" },
            { "name": "user_group" },
            { "name": "user_house" },
            { "name": "user_id" },
            { "name": "user_k" },
            { "name": "user_list" },
            { "name": "user_m" },
            { "name": "user_message" },
            { "name": "user_remove" },
            { "name": "user_square_filled" },
            { "name": "user_tie" },
            { "name": "variable" },
            { "name": "vase" },
            { "name": "warehouse" },
            { "name": "warning" },
            { "name": "warning_auto" },
            { "name": "warning_clock" },
            { "name": "warning_clock_filled" },
            { "name": "warning_filled" },
            { "name": "warning_shield" },
            { "name": "warning_shield_filled" },
            { "name": "way_sign" },
            { "name": "wedding_rings" },
            { "name": "westfalen" },
            { "name": "wheelchair" },
            { "name": "whole_day" },
            { "name": "windows" },
            { "name": "word" },
            { "name": "world" },
            { "name": "wrench" },
            { "name": "zoom_in" },
            { "name": "zoom_out" },
            { "name": "zzz" },
            { "name": "bell" },
            { "name": "bell_mono" },
            { "name": "building_mono" },
            { "name": "calendar" },
            { "name": "calendar_mono" },
            { "name": "calendar25" },
            { "name": "calendar25_mono" },
            { "name": "cart" },
            { "name": "cart_mono" },
            { "name": "clipboard" },
            { "name": "clipboard_mono" },
            { "name": "clock_mono" },
            { "name": "code" },
            { "name": "coffee_mono" },
            { "name": "comment" },
            { "name": "comment_mono" },
            { "name": "construction_mono" },
            { "name": "creditcard_mono" },
            { "name": "document" },
            { "name": "document_mono" },
            { "name": "document_edit" },
            { "name": "document_edit_mono" },
            { "name": "documents" },
            { "name": "documents_mono" },
            { "name": "done" },
            { "name": "done_mono" },
            { "name": "dragndrop" },
            { "name": "dragndrop_mono" },
            { "name": "edit_mono" },
            { "name": "error" },
            { "name": "error_mono" },
            { "name": "folder_mono" },
            { "name": "gas_pump_mono" },
            { "name": "inbox_mono" },
            { "name": "location" },
            { "name": "location_mono" },
            { "name": "lock_mono" },
            { "name": "mail_mono" },
            { "name": "money" },
            { "name": "money_mono" },
            { "name": "news" },
            { "name": "news_mono" },
            { "name": "note_mono" },
            { "name": "photos" },
            { "name": "photos_mono" },
            { "name": "placeholder_mono" },
            { "name": "price" },
            { "name": "price_mono" },
            { "name": "question" },
            { "name": "question_mono" },
            { "name": "sandclock" },
            { "name": "sandclock_mono" },
            { "name": "scan_mono" },
            { "name": "search_mono" },
            { "name": "shield" },
            { "name": "shield_mono" },
            { "name": "snooze" },
            { "name": "snooze_mono" },
            { "name": "star" },
            { "name": "star_mono" },
            { "name": "stop_mono" },
            { "name": "support" },
            { "name": "support_mono" },
            { "name": "tag_mono" },
            { "name": "thumbsup" },
            { "name": "thumbsup_mono" },
            { "name": "trash" },
            { "name": "trash_mono" },
            { "name": "user_mono" },
            { "name": "user_group_mono" },
            { "name": "vacation" },
            { "name": "vacation_mono" },
            { "name": "warning_mono" }
          ]
        },
        {
          "name": "family",
          "description": "The family of icons to choose from. When using empty state icons you can add the mono to get the mono-colored icons.",
          "values": []
        },
        {
          "name": "variant",
          "description": "The name of the icon's variant. Our Libraries do not use any variants, but it is useful for some custom added libraries.",
          "values": []
        },
        {
          "name": "auto-width",
          "description": "Sets the width of the icon to match the cropped SVG viewBox. This operates like the Font `fa-width-auto` class.",
          "values": []
        },
        {
          "name": "swap-opacity",
          "description": "Swaps the opacity of duotone icons.",
          "values": []
        },
        {
          "name": "src",
          "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.",
          "values": []
        },
        {
          "name": "label",
          "description": "An alternate description to use for assistive devices. If omitted, the icon will be considered presentational and\nignored by assistive devices.",
          "values": []
        },
        {
          "name": "library",
          "description": "The name of a registered custom icon library.",
          "values": []
        },
        {
          "name": "no-recolor",
          "description": "Disables the recoloring of the icon with currentColor and instead keeps the initial fill color for each path",
          "values": []
        },
        {
          "name": "rotate",
          "description": "Sets the rotation degree of the icon",
          "values": []
        },
        {
          "name": "flip",
          "description": "Sets the flip direction of the icon along the 'x' (horizontal), 'y' (vertical), or 'both' axes.",
          "values": [{ "name": "x" }, { "name": "y" }, { "name": "both" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/icon"
        }
      ]
    },
    {
      "name": "ed-progress-ring",
      "description": "Progress rings show the progress of an operation in a circular fashion. Set `indeterminate` for a loading spinner.\n---\n\n\n### **Slots:**\n - **label** - The progress ring's label. Alternatively, you can use the `label` attribute.\n\n### **CSS Properties:**\n - **--ed-progress-ring-size** - The diameter of the ring. _(default: 3rem)_\n- **--ed-progress-ring-track-width** - The width of the track stroke (SVG user units). _(default: 4)_\n- **--ed-progress-ring-track-color** - 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. _(default: transparent)_\n- **--ed-progress-ring-indicator-width** - The width of the indicator stroke. _(default: var(--ed-progress-ring-track-width))_\n- **--ed-progress-ring-indicator-color** - The color of the indicator. _(default: var(--ed-color-brand-fill-normal))_\n- **--ed-progress-ring-indicator-transition-duration** - The transition duration for determinate value changes. _(default: 0.35s)_\n\n### **CSS Parts:**\n - **form-control-label** - The label element below the ring.\n- **base** - The component's base wrapper.\n- **track** - The SVG track circle.\n- **indicator** - The SVG indicator circle.",
      "attributes": [
        {
          "name": "value",
          "description": "The current progress as a percentage, 0 to 100. A value outside the range is drawn and reported\nat the nearer end of it; a value that is no number at all counts as 0.",
          "values": []
        },
        {
          "name": "indeterminate",
          "description": "When true, percentage is ignored and a loading spinner animation is shown.",
          "values": []
        },
        {
          "name": "label",
          "description": "The progress ring's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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).",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/progress-ring"
        }
      ]
    },
    {
      "name": "ed-button",
      "description": "Buttons represent actions that are available to the user.\n---\n\n\n### **Events:**\n - **blur** - Emitted when the button loses focus.\n- **focus** - Emitted when the button gains focus.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the button.\n- **focus(options: _FocusOptions_)** - Sets focus on the button.\n- **blur()** - Removes focus from the button.\n\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - _default_ - The button's label.\n- **start** - An element, such as `<ed-icon>`, placed before the label.\n- **end** - An element, such as `<ed-icon>`, placed after the label.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **start** - The container that wraps the `start` slot.\n- **label** - The button's label.\n- **end** - The container that wraps the `end` slot.\n- **caret** - The button's caret icon, a `<ed-icon>` element.\n- **spinner** - The spinner that shows when the button is in the loading state.",
      "attributes": [
        { "name": "title", "values": [] },
        {
          "name": "variant",
          "description": "The button's theme variant. Defaults to `brand` if not within another element with a variant.",
          "values": [
            { "name": "new" },
            { "name": "warning" },
            { "name": "brand" },
            { "name": "ai" },
            { "name": "info" },
            { "name": "neutral" },
            { "name": "success" },
            { "name": "danger" }
          ]
        },
        {
          "name": "navbar",
          "description": "Flags the buttons as a navbar button. This is for convenience to make a full-height, at least squared, header-colored button.",
          "values": []
        },
        {
          "name": "appearance",
          "description": "The button's visual appearance.",
          "values": [
            { "name": "accent" },
            { "name": "filled-outlined" },
            { "name": "filled" },
            { "name": "outlined" },
            { "name": "plain" }
          ]
        },
        {
          "name": "density",
          "description": "Controls the component's spacing density without affecting font-size.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "with-caret",
          "description": "Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior.",
          "values": []
        },
        {
          "name": "with-start",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `start` element so the server-rendered markup\nincludes the start slot before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-end",
          "description": "Only required for SSR. Set to `true` if you're slotting in an `end` element so the server-rendered markup\nincludes the end slot before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "loading",
          "description": "Draws the button in a loading state.",
          "values": []
        },
        {
          "name": "aria-label",
          "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.",
          "values": []
        },
        {
          "name": "pill",
          "description": "Draws a pill-style button with rounded edges.",
          "values": []
        },
        {
          "name": "type",
          "description": "The type of button. Note that the default value is `button` instead of `submit`, which is opposite of how native\n`<button>` elements behave. When the type is `submit`, the button will submit the surrounding form.",
          "values": [
            { "name": "reset" },
            { "name": "button" },
            { "name": "submit" }
          ]
        },
        {
          "name": "name",
          "description": "The name of the button, submitted as a name/value pair with form data, but only when this button is the submitter.\nThis attribute is ignored when `href` is present.",
          "values": []
        },
        {
          "name": "value",
          "description": "The value of the button, submitted as a pair with the button's name as part of the form data, but only when this\nbutton is the submitter. This attribute is ignored when `href` is present.",
          "values": []
        },
        {
          "name": "href",
          "description": "When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`.",
          "values": []
        },
        {
          "name": "target",
          "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.",
          "values": []
        },
        {
          "name": "rel",
          "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute.",
          "values": []
        },
        {
          "name": "download",
          "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
          "values": []
        },
        {
          "name": "formaction",
          "description": "Used to override the form owner's `action` attribute.",
          "values": []
        },
        {
          "name": "formenctype",
          "description": "Used to override the form owner's `enctype` attribute.",
          "values": [
            { "name": "application/x-www-form-urlencoded" },
            { "name": "multipart/form-data" },
            { "name": "text/plain" }
          ]
        },
        {
          "name": "formmethod",
          "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.",
          "values": [
            { "name": "post" },
            { "name": "get" },
            { "name": "dialog" }
          ]
        },
        {
          "name": "formnovalidate",
          "description": "Used to override the form owner's `novalidate` attribute.",
          "values": []
        },
        {
          "name": "formtarget",
          "description": "Used to override the form owner's `target` attribute. Takes the same values as `target`: the four keywords or a\nwindow name.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/button"
        }
      ]
    },
    {
      "name": "ed-notification",
      "description": "Notifications display important inline messages with a title, optional description, and optional action / close.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted before the notification opens. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the notification opens and all animations are complete.\n- **ed-hide** - Emitted before the notification closes. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the notification closes and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the notification.\n- **hide()** - Hides the notification.\n\n### **Slots:**\n - _default_ - The notification's title (required, vertically centered against the icon).\n- **description** - Optional description content shown below the title row. When `collapsible` is set, this content is hidden until the user expands the toggle.\n- **icon** - Override the default variant icon.\n- **action** - Action buttons placed in the title row toolbar. One button is recommended.\n\n### **CSS Parts:**\n - **base** - The container that wraps the whole notification.\n- **icon** - The icon cell.\n- **title** - The title cell.\n- **toggle** - The collapse toggle button (rendered only when `collapsible`).\n- **description** - The description cell. Always in the DOM, and hidden while the slot is empty or while `collapsible` is collapsed.\n- **action** - The action slot wrapper.\n- **close-button** - The close button (rendered only when `closable`).",
      "attributes": [
        {
          "name": "variant",
          "description": "The notification's theme variant.",
          "values": [
            { "name": "new" },
            { "name": "warning" },
            { "name": "brand" },
            { "name": "ai" },
            { "name": "info" },
            { "name": "neutral" },
            { "name": "success" },
            { "name": "danger" }
          ]
        },
        {
          "name": "open",
          "description": "Indicates whether the notification is open. Toggle to show/hide; reflects to the attribute.",
          "values": []
        },
        {
          "name": "closable",
          "description": "When set, renders a close button that hides the notification on click.",
          "values": []
        },
        {
          "name": "collapsible",
          "description": "When set, the description is hidden behind a toggle in the title row. Only meaningful when a `description` slot is provided.",
          "values": []
        },
        {
          "name": "static-open",
          "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`.",
          "values": []
        },
        {
          "name": "without-live-region",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/notification"
        }
      ]
    },
    {
      "name": "ed-toast-item",
      "description": "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.\n---\n\n\n### **Events:**\n - **OWN_EVENT**\n- **ed-show** - Emitted before the toast opens. Cancelable; calling `preventDefault()` keeps it closed. Like all four, not composed: it stops at the shadow root the toast sits in.\n- **ed-after-show** - Emitted after the toast has fully opened and all animations are complete. Not composed.\n- **ed-hide** - Emitted before the toast closes. Cancelable; calling `preventDefault()` keeps it open, with its dismiss timer still running. Not composed.\n- **ed-after-hide** - Emitted after the toast has fully closed and all animations are complete. Not composed.\n\n### **Methods:**\n - **connectedMoveCallback()** - An atomic move (`moveBefore`) keeps the toast as it is; defining this is what stops the browser\nfrom running the disconnect/connect pair for it, which would restart the show and the timer.\n- **show()** - Shows the toast. Returns a promise that resolves when the opening animation completes, or when\nthe show is called off by `hide()` or a cancelled `ed-show`.\n- **hide()** - Hides the toast. Returns a promise that resolves when the closing animation completes — at once\nfor a toast still waiting for its first update, whose open this calls off.\n\n### **Slots:**\n - _default_ - The toast title (required).\n- **description** - Optional description content shown below the title.\n- **action** - Action buttons (typically one `<ed-button>`).\n- **icon** - Override the default variant icon.\n\n### **CSS Parts:**\n - **base** - The host wrapper that owns the entrance/exit motion.\n- **notification** - The inner `<ed-notification>` element.",
      "attributes": [
        {
          "name": "variant",
          "description": "The toast's theme variant.",
          "values": [
            { "name": "new" },
            { "name": "warning" },
            { "name": "brand" },
            { "name": "ai" },
            { "name": "info" },
            { "name": "neutral" },
            { "name": "success" },
            { "name": "danger" }
          ]
        },
        {
          "name": "sensitivity",
          "description": "Announcement urgency for assistive tech, mirroring `aria-live`. When unset it is derived\nfrom `variant`: `danger`/`warning` → `assertive`, everything else → `polite`.",
          "values": [{ "name": "polite" }, { "name": "assertive" }]
        },
        {
          "name": "open",
          "description": "Whether the toast is open. Toggle to show/hide; reflects to the attribute.",
          "values": []
        },
        {
          "name": "duration",
          "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.",
          "values": [{ "name": "infinity" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toast-item"
        }
      ]
    },
    {
      "name": "ed-toast-stack",
      "description": "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.\n---\n\n\n### **Methods:**\n - **connectedMoveCallback()** - An atomic move (`moveBefore`) runs this instead of the disconnect/connect pair. Firefox 151 takes\na popover inside a shadow root out of the top layer on the move — every built-in stack sits in\none — where Chromium 149 keeps it: bring it back when it holds toasts.\n- **create(messageOrOptions: _string | ToastOptions_, options: _ToastOptions_): __** - 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> }`.\n- **getOrCreate(placement: _Placement_): _EdToastStack_** - Returns the page stack — a stack the consumer placed, else `<ed-app>`'s, else one appended to\n`document.body`, created on the first call. There is one per page: `placement` applies only when\nthe stack is created here, and then wins over `toast.configure()`.\n\nEnables the one-liner:\n```ts\nEdToastStack.getOrCreate().create({ variant: 'success', title: 'Saved' });\n```\n\n### **Slots:**\n - _default_ - `<ed-toast-item>` items. Other content is allowed but discouraged.\n\n### **CSS Properties:**\n - **--ed-toast-stack-gap** - Gap between stacked toast items. _(default: var(--ed-space-3))_\n- **--ed-toast-stack-offset-block** - Distance from the top/bottom viewport edge. _(default: var(--ed-space-4))_\n- **--ed-toast-stack-offset-inline** - 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. _(default: var(--ed-space-4))_\n- **--ed-toast-stack-max-width** - Maximum width of the stack column; child toasts inherit this. _(default: 25rem)_\n\n### **CSS Parts:**\n - **live-region-polite** - Visually-hidden, persistent `aria-live=\"polite\"` region that receives announcements for toasts whose resolved `sensitivity` is `polite`.\n- **live-region-assertive** - Visually-hidden, persistent `aria-live=\"assertive\"` region that receives announcements for toasts whose resolved `sensitivity` is `assertive`.",
      "attributes": [
        {
          "name": "placement",
          "description": "The placement of the stack relative to the viewport.\nLogical values (`-start` / `-end`) respect the document writing direction.",
          "values": [
            { "name": "top-start" },
            { "name": "top-center" },
            { "name": "top-end" },
            { "name": "bottom-start" },
            { "name": "bottom-center" },
            { "name": "bottom-end" }
          ]
        },
        {
          "name": "label",
          "description": "The accessible label for the region, used as `aria-label`.\nWhen not set by the consumer, defaults to the localized string for \"Notifications\".",
          "values": []
        },
        {
          "name": "hotkey",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toast-stack"
        }
      ]
    },
    {
      "name": "ed-checkbox",
      "description": "Checkboxes allow the user to toggle an option on or off.\n---\n\n\n### **Events:**\n - **change** - Emitted when the checked state changes.\n- **blur** - Emitted when the checkbox loses focus.\n- **focus** - Emitted when the checkbox gains focus.\n- **input** - Emitted when the checkbox receives input.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - The restorable state is the checkedness, because that is what the user entered — `value` comes\nback from the markup on its own, and the base class would otherwise write the restored state\nthere and leave the checkedness untouched. A native checkbox restores exactly the checkedness.\n- **click()** - Simulates a click on the checkbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the checkbox.\n- **blur()** - Removes focus from the checkbox.\n- **setValue(args: _Parameters<EdFormAssociatedElement['setValue']>_)** - A checkbox submits its value only while it is checked, so the guard belongs where the value is\nwritten rather than at each caller. The base class re-runs `setValue` whenever `disabled`\nchanges — right for a text field, whose value stands on its own — and a checkbox enabled while\nunchecked would otherwise put its value into the form with nothing behind it.\n\nShaped after `ed-radio-group`, which guards the same way: through `super` rather than\n`internals.setFormValue`, so anything the base adds to that seam still applies. The restore\nstate is decided here rather than taken from the caller — see below.\n\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - _default_ - The checkbox's label.\n- **hint** - Text that describes how to use the checkbox. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--ed-checkbox-checked-icon-color** - The fill of the control box when checked or indeterminate, and its border color while focused. The glyph is drawn in the form control background color — except with `alternative`, where this property colors the glyph itself. _(default: undefined)_\n- **--ed-checkbox-checked-icon-size** - The size of the visible control box, and the host's line height with it. The box around it follows --ed-form-control-toggle-size, so raising this alone can push the box past the label. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The square container that wraps the checkbox's checked state.\n- **icon** - The icon element inside the control box, carrying the box fill and the glyph.\n- **checked-icon** - The checked icon, a `<ed-icon>` element.\n- **indeterminate-icon** - The indeterminate icon, a `<ed-icon>` element.\n- **label** - The container that wraps the checkbox's label.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.",
      "attributes": [
        { "name": "title", "values": [] },
        {
          "name": "aria-label",
          "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.",
          "values": []
        },
        {
          "name": "value",
          "description": "Removing the attribute has to be told apart from assigning `null`, and Lit hands the setter\n`null` for both. The converter marks the attribute path with a sentinel, so removing it restores\nthe `'on'` default the way a native checkbox does, while the property path keeps its own rule.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Makes the checkbox readonly.",
          "values": []
        },
        {
          "name": "indeterminate",
          "description": "Draws the checkbox in an indeterminate state. This is usually applied to checkboxes that represents a \"select\nall/none\" behavior when associated checkboxes have a mix of checked and unchecked states.",
          "values": []
        },
        {
          "name": "alternative",
          "description": "Enables alternative styling",
          "values": []
        },
        {
          "name": "checked",
          "description": "The default value of the form control. Primarily used for resetting the form control.",
          "values": []
        },
        {
          "name": "required",
          "description": "Makes the checkbox a required field.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the input, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/checkbox"
        }
      ]
    },
    {
      "name": "ed-list-group",
      "description": "A labelled group of entries inside an `<ed-list>`, whose head stays in view while the group scrolls.\n---\n\n\n### **Events:**\n - **ed-expand** - Before a collapsible group expands. Cancelable; calling `preventDefault()` keeps it collapsed.\n- **ed-after-expand** - After the group expanded.\n- **ed-collapse** - Before a collapsible group collapses. Cancelable; calling `preventDefault()` keeps it expanded.\n- **ed-after-collapse** - After the group collapsed.\n\n### **Slots:**\n - _default_ - `<ed-list-item>` elements.\n- **label** - The group's name. Alternatively, use the `label` attribute.\n\n### **CSS Parts:**\n - **header** - The head.\n- **toggle** - The button the head becomes when the group is collapsible.\n- **toggle-icon** - The chevron in the toggle.\n- **label** - The wrapper of the name.\n- **count** - The number of entries.\n- **items** - The element carrying the nested list role.",
      "attributes": [
        {
          "name": "label",
          "description": "The group's name. For markup, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "collapsible",
          "description": "Turns the head into a button that expands and collapses the group.",
          "values": []
        },
        {
          "name": "expanded",
          "description": "Whether a collapsible group shows its entries. Ignored without `collapsible`, where the entries always show.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/list-group"
        }
      ]
    },
    {
      "name": "ed-list",
      "description": "A list of entries that are read rather than compared, with an optional title and actions.\n---\n\n\n### **Events:**\n - **ed-list-selection-change** - After the user changed the selection, through an entry or the select-all box. `selection` holds every selected, enabled entry, hidden ones included. Not fired when `selected` or `hidden` is set in code.\n\n### **Slots:**\n - _default_ - `<ed-list-item>` and `<ed-list-group>` elements.\n- **label** - The title, which also names the list. Slot a heading when it is a section heading. Alternatively, use the `label` attribute.\n- **actions** - Buttons in the head; in a selectable list, the bulk actions.\n\n### **CSS Parts:**\n - **base** - The frame.\n- **header** - The head.\n- **select-all** - The select-all box in a selectable list.\n- **heading** - The wrapper of the title and the count line in a selectable list.\n- **label** - The wrapper of the title.\n- **count** - The count line of a selectable list, \"0 of n selected\" included.\n- **actions** - The wrapper of the `actions` slot.\n- **items** - The element carrying the list role. It scrolls while the head stays, once the list's height is limited.\n- **live-region** - Where the list announces the count after a change. Visually hidden.",
      "attributes": [
        {
          "name": "label",
          "description": "The title, which also names the list. For a heading element, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "appearance",
          "description": "`outlined` draws the frame; `plain` has none, for a list inside a card, drawer or side panel.",
          "values": [{ "name": "outlined" }, { "name": "plain" }]
        },
        {
          "name": "selectable",
          "description": "Gives every entry a checkbox and the head a select-all box and a count.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/list"
        }
      ]
    },
    {
      "name": "ed-list-item",
      "description": "One entry of an `<ed-list>`: static, or leading to its record when it has an `href`.\n---\n\n\n### **Slots:**\n - _default_ - The primary line.\n- **start** - An icon or avatar before the text. Part of the click surface.\n- **description** - The secondary line. Part of the click surface.\n- **end** - Information after the text, such as a badge, an amount or a date. Part of the click surface — put nothing interactive here.\n- **actions** - Buttons or a dropdown for this entry, beside the click surface. Not rendered when the item has an `href`.\n- **navigation-icon** - The sign that the entry leads on. Defaults to the `next` icon; only rendered with `href`.\n\n### **CSS Parts:**\n - **base** - The row.\n- **checkbox** - The entry's checkbox in a selectable list.\n- **content** - The click surface: an `<a>` with `href`, a `<div>` without.\n- **start** - The wrapper of the `start` slot.\n- **text** - The wrapper of the primary and secondary line.\n- **label** - The wrapper of the primary line.\n- **description** - The wrapper of the secondary line.\n- **end** - The wrapper of the `end` slot.\n- **navigation-icon** - The wrapper of the navigation icon.\n- **actions** - The wrapper of the `actions` slot.",
      "attributes": [
        {
          "name": "href",
          "description": "The URL the entry leads to. With it, the whole entry is a link and `actions` is not rendered.",
          "values": []
        },
        {
          "name": "target",
          "description": "Where to open the link. Only used with `href`.",
          "values": []
        },
        {
          "name": "rel",
          "description": "The link's `rel`. Only used with `href`; unset by default, like a plain `<a>`.",
          "values": []
        },
        {
          "name": "download",
          "description": "Downloads the link's target instead of navigating, under this file name. Only used with `href`.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables an entry that leads somewhere or can be selected: it does not navigate, cannot be\nselected, and its link or checkbox leaves the tab order. Its actions keep their own state — a\nstatic entry has nothing of its own to disable, so an action is disabled on the slotted action\nitself, in a selectable list too.",
          "values": []
        },
        {
          "name": "selected",
          "description": "Whether the entry is selected. Shown only in a selectable list.",
          "values": []
        },
        {
          "name": "value",
          "description": "Identifies the entry in a selection.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/list-item"
        }
      ]
    },
    {
      "name": "ed-popup",
      "description": "Positions a floating box next to an anchor element and keeps it in view; the base other floating components\nsuch as dropdown, select and tooltip are built on.\n---\n\n\n### **Events:**\n - **ed-reposition** - Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive operations in your listener or consider debouncing it.\n\n### **Methods:**\n - **reposition()** - Forces the popup to recalculate and reposition itself.\n\n### **Slots:**\n - _default_ - The popup's content.\n- **anchor** - The element the popup will be anchored to. If the anchor lives outside the popup, you can use the `anchor` attribute or property instead.\n\n### **CSS Properties:**\n - **--ed-popup-arrow-size** - The size of the arrow. Note that an arrow won't be shown unless the `arrow` attribute is used. _(default: 6px)_\n- **--ed-popup-border-width** - The width of any custom border applied to the popup. This is used to reposition the arrow to overlap to the inside edge of the popup border. _(default: undefined)_\n- **--ed-popup-arrow-color** - The color of the arrow. _(default: black)_\n- **--ed-popup-auto-size-available-width** - A read-only custom property that determines the amount of width the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`. _(default: undefined)_\n- **--ed-popup-auto-size-available-height** - A read-only custom property that determines the amount of height the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`. _(default: undefined)_\n- **--ed-show-duration** - The show duration to use when applying built-in animation classes. _(default: var(--ed-transition-fast))_\n- **--ed-hide-duration** - The hide duration to use when applying built-in animation classes. _(default: var(--ed-transition-fast))_\n\n### **CSS Parts:**\n - **arrow** - The arrow's container. Avoid setting `top|bottom|left|right` properties, as these values are assigned dynamically as the popup moves. This is most useful for applying a background color to match the popup, and maybe a border or box shadow.\n- **popup** - The popup's container. Useful for setting a background color, box shadow, etc.\n- **hover-bridge** - The hover bridge element. Only available when the `hover-bridge` option is enabled.",
      "attributes": [
        {
          "name": "anchor",
          "description": "The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide the anchor\nelement `id`, a DOM element reference, or a `VirtualElement`. If the anchor lives inside the popup, use the\n`anchor` slot instead.",
          "values": [
            { "name": "Element" },
            {
              "name": "{ getBoundingClientRect: {  }, contextElement?: Element }"
            }
          ]
        },
        {
          "name": "active",
          "description": "Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.",
          "values": []
        },
        {
          "name": "placement",
          "description": "The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.",
          "values": [
            { "name": "left" },
            { "name": "right" },
            { "name": "top-start" },
            { "name": "top-end" },
            { "name": "bottom-start" },
            { "name": "bottom-end" },
            { "name": "top" },
            { "name": "bottom" },
            { "name": "right-start" },
            { "name": "right-end" },
            { "name": "left-start" },
            { "name": "left-end" }
          ]
        },
        {
          "name": "boundary",
          "description": "The bounding box to use for flipping, shifting, and auto-sizing.",
          "values": [{ "name": "viewport" }, { "name": "scroll" }]
        },
        {
          "name": "distance",
          "description": "The distance in pixels from which to offset the panel away from its anchor.",
          "values": []
        },
        {
          "name": "skidding",
          "description": "The distance in pixels from which to offset the panel along its anchor.",
          "values": []
        },
        {
          "name": "arrow",
          "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.",
          "values": []
        },
        {
          "name": "arrow-placement",
          "description": "The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.",
          "values": [
            { "name": "anchor" },
            { "name": "start" },
            { "name": "end" },
            { "name": "center" }
          ]
        },
        {
          "name": "arrow-padding",
          "description": "The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.",
          "values": []
        },
        {
          "name": "flip",
          "description": "When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.",
          "values": []
        },
        {
          "name": "flip-fallback-placements",
          "description": "If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.",
          "values": []
        },
        {
          "name": "flip-fallback-strategy",
          "description": "When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.",
          "values": [{ "name": "best-fit" }, { "name": "initial" }]
        },
        {
          "name": "flipBoundary",
          "description": "The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
          "values": [{ "name": "Element" }, { "name": "Element[]" }]
        },
        {
          "name": "flip-padding",
          "description": "The amount of padding, in pixels, to exceed before the flip behavior will occur.",
          "values": []
        },
        {
          "name": "shift",
          "description": "Moves the popup along the axis to keep it in view when clipped.",
          "values": []
        },
        {
          "name": "shiftBoundary",
          "description": "The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
          "values": [{ "name": "Element" }, { "name": "Element[]" }]
        },
        {
          "name": "shift-padding",
          "description": "The amount of padding, in pixels, to exceed before the shift behavior will occur.",
          "values": []
        },
        {
          "name": "auto-size",
          "description": "When set, this will cause the popup to automatically resize itself to prevent it from overflowing.",
          "values": [
            { "name": "both" },
            { "name": "horizontal" },
            { "name": "vertical" }
          ]
        },
        {
          "name": "sync",
          "description": "Syncs the popup's width or height to that of the anchor element.",
          "values": [
            { "name": "width" },
            { "name": "height" },
            { "name": "both" }
          ]
        },
        {
          "name": "autoSizeBoundary",
          "description": "The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
          "values": [{ "name": "Element" }, { "name": "Element[]" }]
        },
        {
          "name": "auto-size-padding",
          "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
          "values": []
        },
        {
          "name": "hover-bridge",
          "description": "When a gap exists between the anchor and the popup element, this option will add a \"hover bridge\" that fills the\ngap using an invisible element. This makes listening for events such as `mouseenter` and `mouseleave` more sane\nbecause the pointer never technically leaves the element. The hover bridge will only be drawn when the popover is\nactive.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/popup"
        }
      ]
    },
    {
      "name": "ed-tooltip",
      "description": "Shows a short, non-essential hint next to an element on hover or keyboard focus, such as the meaning of an\nicon.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the tooltip begins to show. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the tooltip has shown and all animations are complete.\n- **ed-hide** - Emitted when the tooltip begins to hide. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the tooltip has hidden and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the tooltip.\n- **hide()** - Hides the tooltip\n\n### **Slots:**\n - _default_ - The tooltip's default slot where any content should live. HTML and a simple link are fine; buttons and form controls belong in ed-popover instead.\n\n### **CSS Properties:**\n - **--ed-tooltip-max-width** - The maximum width of the tooltip before its content will wrap. _(default: undefined)_\n- **--ed-tooltip-arrow-size** - The size of the arrow pointing at the anchor. Set to 0 to remove it. _(default: 0.375rem)_\n- **--ed-tooltip-border-style** - The border style of the tooltip's surface. _(default: none)_\n- **--ed-tooltip-border-width** - The border width of the tooltip's surface. Always give it a unit: a unitless 0 breaks the `calc()` that sizes the arrow. _(default: 0px)_\n- **--ed-tooltip-border-radius** - The corner radius of the tooltip's surface. _(default: var(--ed-border-radius-2x))_\n- **--ed-tooltip-font-size** - The font size of the tooltip's content. _(default: var(--ed-font-size-m))_\n- **--ed-tooltip-line-height** - The line height of the tooltip's content. _(default: var(--ed-line-height-expanded))_\n\n### **CSS Parts:**\n - **panel** - The floating surface holding the content. Carries the frame, background and shadow.\n- **popup** - The internal `<ed-popup>` element that positions the tooltip.\n- **popup__popup** - The popup's exported `popup` part. Use this to target the tooltip's popup container.\n- **popup__arrow** - The popup's exported `arrow` part. Use this to target the tooltip's arrow.",
      "attributes": [
        {
          "name": "placement",
          "description": "The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\ninside of the viewport.",
          "values": [
            { "name": "left" },
            { "name": "right" },
            { "name": "top-start" },
            { "name": "top-end" },
            { "name": "bottom-start" },
            { "name": "bottom-end" },
            { "name": "top" },
            { "name": "bottom" },
            { "name": "right-start" },
            { "name": "right-end" },
            { "name": "left-start" },
            { "name": "left-end" }
          ]
        },
        {
          "name": "disabled",
          "description": "Disables the tooltip so it won't show when triggered.",
          "values": []
        },
        {
          "name": "distance",
          "description": "The distance in pixels from which to offset the tooltip away from its target.",
          "values": []
        },
        {
          "name": "open",
          "description": "Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.",
          "values": []
        },
        {
          "name": "skidding",
          "description": "The distance in pixels from which to offset the tooltip along its target.",
          "values": []
        },
        {
          "name": "show-delay",
          "description": "The amount of time to wait before showing the tooltip when the user mouses in.",
          "values": []
        },
        {
          "name": "hide-delay",
          "description": "The amount of time to wait before hiding the tooltip when the user mouses out.",
          "values": []
        },
        {
          "name": "trigger",
          "description": "Controls how the tooltip is activated. Possible options include `click`, `hover`, `focus`, and `manual`. Multiple\noptions can be passed by separating them with a space. When manual is used, the tooltip must be activated\nprogrammatically.",
          "values": []
        },
        {
          "name": "without-arrow",
          "description": "Removes the arrow from the tooltip.",
          "values": []
        },
        {
          "name": "for",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tooltip"
        }
      ]
    },
    {
      "name": "ed-side-menu-item",
      "description": "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.\n---\n\n\n### **Events:**\n - **ed-navigate** - 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.\n- **ed-expand** - Emitted before the item expands. Cancelable; calling `preventDefault()` keeps it collapsed.\n- **ed-after-expand** - Emitted after the item expands and all animations are complete.\n- **ed-collapse** - Emitted before the item collapses. Cancelable; calling `preventDefault()` keeps it expanded.\n- **ed-after-collapse** - Emitted after the item collapses and all animations are complete.\n\n### **Methods:**\n - **isExpandableItem(node: _Node_): _node is EdExpandableItem_** - Determines whether a node is an expandable item — replaces brittle `role=`/tag sniffing.\n\n- **getChildrenItems({ includeDisabled = true }: _{ includeDisabled?: boolean }_): _EdExpandableItem[]_** - Gets all the nested expandable items in this node.\n\n### **Slots:**\n - _default_ - The default slot for the item label.\n- **start** - Content placed before the label, e.g. an icon.\n- **end** - Content placed after the label, e.g. a badge 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.\n- **description** - Secondary text rendered below the label.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **item-wrapper** - The wrapper around indentation, row, and the disclosure button.\n- **row** - The flex row holding the clickable link and the disclosure button.\n- **item** - 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`.\n- **indentation** - The item's indentation container.\n- **expand-button** - The focusable disclosure button (sibling of the link — toggling it does not navigate).\n- **start** - Container for the start slot.\n- **text** - Wrapper for label and description.\n- **label** - The item's label.\n- **description** - Container for the description slot.\n- **end** - Container for the end slot.\n- **children** - Container for nested child items.\n- **tooltip** - 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.",
      "attributes": [
        {
          "name": "pinned",
          "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.",
          "values": []
        },
        {
          "name": "href",
          "description": "The URL the item navigates to. When set, the item renders as an `<a>` element with proper link semantics.",
          "values": []
        },
        {
          "name": "target",
          "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.",
          "values": []
        },
        {
          "name": "rel",
          "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.",
          "values": []
        },
        {
          "name": "value",
          "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.",
          "values": []
        },
        {
          "name": "active",
          "description": "True when this item's effective value matches the parent side-menu's `current`. Set by the parent; do not write directly.",
          "values": []
        },
        {
          "name": "slim",
          "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).",
          "values": []
        },
        {
          "name": "density",
          "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.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "expanded",
          "description": "Expands the item.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables the item.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu-item"
        }
      ]
    },
    {
      "name": "ed-tree-item",
      "description": "A tree item serves as a hierarchical node that lives inside a [tree](/a/eurodata-ui/docs/components/tree).\n---\n\n\n### **Events:**\n - **ed-expand** - Emitted before the tree item expands. Cancelable; calling `preventDefault()` keeps it collapsed — useful when a lazy load fails.\n- **ed-after-expand** - Emitted after the tree item expands and all animations are complete.\n- **ed-collapse** - Emitted before the tree item collapses. Cancelable; calling `preventDefault()` keeps it expanded.\n- **ed-after-collapse** - Emitted after the tree item collapses and all animations are complete.\n- **ed-lazy-change** - Emitted when the tree item's lazy state changes.\n- **ed-lazy-load** - Emitted when a lazy item is selected. Use this event to asynchronously load data and append items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading state and update the tree.\n\n### **Methods:**\n \n- **getChildrenItems({ includeDisabled = true }: _{ includeDisabled?: boolean }_): _EdTreeItem[]_** - Gets all the nested tree items in this node.\n- **isExpandableItem(node: _Node_): _node is EdExpandableItem_** - Determines whether a node is an expandable item — replaces brittle `role=`/tag sniffing.\n\n### **Slots:**\n - _default_ - The default slot.\n- **start** - Content placed before the label, e.g. an icon.\n- **end** - Content placed after the label, e.g. an action button or badge.\n- **description** - Secondary text rendered below the label. Stays at default styling regardless of selection state (does not adopt the active or path-highlight color/weight).\n- **expand-icon** - The icon to show when the tree item is expanded.\n- **collapse-icon** - The icon to show when the tree item is collapsed.\n\n### **CSS Properties:**\n - **--ed-show-duration** - The animation duration when expanding tree items. _(default: var(--ed-transition-normal))_\n- **--ed-hide-duration** - The animation duration when collapsing tree items. _(default: var(--ed-transition-normal))_\n- **--ed-tree-item-background** - The background color the tree item sits on. Hover and active states are mixed on top of this value, so override it when placing the tree on a non-default surface (e.g. a raised panel or card) to keep hover/active feedback coherent. _(default: var(--ed-color-surface-default))_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **item-wrapper** - The row as a whole: the indentation and the item side by side.\n- **item** - The tree item's container. This element wraps everything except slotted tree item children.\n- **indentation** - The tree item's indentation container.\n- **expand-button** - The container that wraps the tree item's expand button and spinner.\n- **spinner** - The spinner that shows when a lazy tree item is in the loading state.\n- **spinner__base** - The spinner's base part.\n- **start** - The container for the `start` slot, rendered before the label.\n- **text** - The vertical container that wraps the label and the description.\n- **label** - The tree item's label.\n- **description** - The container for the `description` slot, rendered below the label.\n- **end** - The container for the `end` slot, rendered after the label.\n- **children** - The container that wraps the tree item's nested children.\n- **checkbox** - The checkbox that shows when using multiselect.\n- **checkbox__base** - The checkbox's exported `base` part.\n- **checkbox__control** - The checkbox's exported `control` part.\n- **checkbox__checked-icon** - The checkbox's exported `checked-icon` part.\n- **checkbox__indeterminate-icon** - The checkbox's exported `indeterminate-icon` part.\n- **checkbox__label** - The checkbox's exported `label` part.",
      "attributes": [
        {
          "name": "selected",
          "description": "Draws the tree item in a selected state.",
          "values": []
        },
        {
          "name": "lazy",
          "description": "Enables lazy loading behavior.",
          "values": []
        },
        {
          "name": "expanded",
          "description": "Expands the item.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables the item.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tree-item"
        }
      ]
    },
    {
      "name": "ed-carousel-item",
      "description": "One slide inside a carousel, holding an image or a short block of content.\n---\n\n\n### **Slots:**\n - _default_ - The carousel item's content.\n\n### **CSS Properties:**\n - **--ed-carousel-aspect-ratio** - The slide's aspect ratio. Inherited from the carousel by default. _(default: undefined)_",
      "attributes": [
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/carousel-item"
        }
      ]
    },
    {
      "name": "ed-step",
      "description": "A single stage inside an `<ed-stepper>`, showing its position, label and status.\n---\n\n\n### **Slots:**\n - _default_ - The step's label.\n- **description** - Optional text shown under the label.\n- **icon** - An element, such as `<ed-icon>`, that replaces the step number, checkmark or loading indicator.\n\n### **CSS Properties:**\n - **--ed-step-pulse-color** - The color of the marker's pulse effect when using `attention=\"pulse\"`. Defaults to the step's accent color. _(default: undefined)_\n\n### **CSS Parts:**\n - **step** - The component's outer wrapper.\n- **connector** - The line connecting this step to its neighbors. Each step draws the half leading in and the half leading out, and both carry this part name.\n- **button** - The `<button>` wrapping the marker and content. Only rendered when the parent stepper is `clickable`; otherwise the same wrapper is a plain, non-focusable element.\n- **marker** - The circular marker that shows the step's number, checkmark or loading indicator.\n- **spinner** - The progress ring shown in the marker while the step is `loading`.\n- **content** - The wrapper around the label, status text and description.\n- **label** - The step's label.\n- **status** - Visually hidden text that tells assistive technology whether the step is completed, not completed, disabled or locked.\n- **description** - The step's description.",
      "attributes": [
        {
          "name": "name",
          "description": "Identifies the step. Matched against the stepper's `active` attribute and used in events.",
          "values": []
        },
        {
          "name": "completed",
          "description": "Marks the step done. Shows a checkmark instead of the step number.",
          "values": []
        },
        {
          "name": "loading",
          "description": "Shows a loading indicator instead of the step number, e.g. while an async transition is in progress.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Makes the step non-interactive. It can't be clicked or reached with `next()`/`goTo()`, and it renders as a\ndisabled button when the stepper is `clickable`.",
          "values": []
        },
        {
          "name": "variant",
          "description": "Colors the step's marker with a semantic color. Upcoming steps keep a neutral outline in every variant, so a\ndefault stepper reads quietly. The color is cosmetic; pair it with an icon in the `icon` slot and a clear label when a\nstep needs to read as failed or flagged.",
          "values": [
            { "name": "warning" },
            { "name": "brand" },
            { "name": "neutral" },
            { "name": "success" },
            { "name": "danger" }
          ]
        },
        {
          "name": "attention",
          "description": "Adds an animation to the step's marker to draw attention to it, e.g. the step the user should do next.",
          "values": [
            { "name": "none" },
            { "name": "pulse" },
            { "name": "bounce" }
          ]
        },
        {
          "name": "with-description",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `description` element, so the server-rendered\nmarkup includes it before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "active",
          "description": "Draws the step as the stepper's current step. The parent `<ed-stepper>` sets this from its own `active`\nattribute, so you only need to set it yourself for SSR.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/step"
        }
      ]
    },
    {
      "name": "ed-wizard-step",
      "description": "One step of an `<ed-wizard>`: its entry in the wizard's stepper and the content shown while it is active.\n---\n\n\n### **Events:**\n \n\n### **Slots:**\n - _default_ - The step's content, shown while the step is active. Add the `autofocus` attribute to a control here to move focus to it when the user or a method makes the step active.\n\n### **CSS Parts:**\n - **base** - The wrapper of the step's content.",
      "attributes": [
        {
          "name": "name",
          "description": "Identifies the step. Matched against the wizard's `active` attribute and used in its events. A step without a\nname is addressed as `step-<n>`, its 1-based position.",
          "values": []
        },
        {
          "name": "label",
          "description": "The step's label, shown in the wizard's stepper. An attribute rather than a slot: the stepper lives in the\nwizard's shadow root, where a step's light-DOM content cannot be projected.",
          "values": []
        },
        {
          "name": "description",
          "description": "Optional text shown under the label in the wizard's stepper.",
          "values": []
        },
        {
          "name": "icon",
          "description": "The name of an icon shown in the step's marker instead of its number or checkmark.",
          "values": []
        },
        {
          "name": "completed",
          "description": "Marks the step done. With the wizard's `linear` attribute, Next stays disabled until the active step is\ncompleted.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Makes the step unreachable. Next and Previous skip it, and it cannot be clicked in the stepper.",
          "values": []
        },
        {
          "name": "loading",
          "description": "Shows a loading indicator in the step's marker, e.g. while an async check runs.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard-step"
        }
      ]
    },
    {
      "name": "ed-dialog",
      "description": "Dialogs, sometimes called \"modals\", appear above the page and block it until they are answered — or,\nwith `non-modal`, sit above it while the page keeps working.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the dialog opens. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the dialog opens and all animations are complete.\n- **ed-hide** - 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.\n- **ed-after-hide** - Emitted after the dialog closes and all animations are complete.\n\n### **Methods:**\n - **connectedMoveCallback()** - An atomic move (`moveBefore`) runs this instead of the disconnect/reconnect pair. Engines\ndisagree on what it does to a modal `<dialog>` inside a shadow root, which this one always is:\nChromium 149 keeps it `:modal`, Firefox 151 leaves it `open` but no longer modal, with no\n`close` event — the page behind it live again, Escape and the toast stack gone with it. A\npopover survives the move in both. Reopen only what the move broke: reopening an intact dialog\nemits a native `close` and drops it out of the top layer for a frame.\n- **handleDraggableChange()** - A drag can be in flight when the property that allows it goes away. `handleDrag` only tests\nwhether a drag is running, so without this the panel would keep following the pointer after the\ngrab cursor has already gone with the `dialog-draggable` class.\n- **handleFullscreenChange()** - An inline position beats `:host([fullscreen]) [part~='panel']`, which would leave a dialog that\nwas dragged before going fullscreen sitting at its old coordinates, viewport-sized, hanging off\ntwo edges of the screen. Dropping the pin hands the layout back to the fullscreen rule.\n- **center()** - Returns the dialog to the middle of the viewport, where the CSS keeps it centered until it is\ndragged again — including while its content is still growing. A dialog that has not been dragged\nis already there, and a modal one is centered by the same rules, so this is a no-op for both.\n\n### **Slots:**\n - _default_ - The dialog's main content.\n- **label** - The dialog's title. Alternatively, you can use the `label` attribute.\n- **sublabel** - The dialog's subtitle. Alternatively, you can use the `sublabel` attribute.\n- **header-actions** - Optional actions to add to the header. Works best with `<ed-button>`.\n- **footer** - The dialog's footer, usually one or more buttons representing various options.\n\n### **CSS Properties:**\n - **--ed-dialog-spacing** - The amount of space around and between the dialog's content. _(default: var(--ed-panel-spacing))_\n- **--ed-dialog-width** - The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens. _(default: undefined)_\n- **--ed-dialog-min-width** - The width the dialog will not shrink below. _(default: 20rem)_\n- **--ed-show-duration** - The animation duration when showing the dialog. _(default: var(--ed-transition-normal))_\n- **--ed-hide-duration** - The animation duration when hiding the dialog. _(default: var(--ed-transition-normal))_\n- **--ed-dialog-backdrop-filter** - A CSS filter, e.g. `blur(4px)`, applied to the backdrop element behind the dialog. _(default: undefined)_\n\n### **CSS Parts:**\n - **panel** - The dialog's surface, its native `<dialog>` element. Carries the frame, background and shadow.\n- **header** - The dialog's header. This element wraps the title and header actions.\n- **header-actions** - Optional actions to add to the header. Works best with `<ed-button>`.\n- **title** - The dialog's title.\n- **subtitle** - The dialog's subtitle.\n- **close-button** - The close button, a `<ed-button>`.\n- **close-button__base** - The close button's exported `base` part.\n- **body** - The dialog's body.\n- **footer** - The dialog's footer.",
      "attributes": [
        {
          "name": "open",
          "description": "Indicates whether the dialog is open. Toggle this attribute to show and hide the dialog.",
          "values": []
        },
        {
          "name": "label",
          "description": "The dialog's title as displayed in the header. You should always include a relevant title, as it is required for\nproper accessibility. If you need to display HTML, use the `label` slot instead. Not `title`: that global\nattribute shows a browser tooltip over the whole dialog.",
          "values": []
        },
        {
          "name": "sublabel",
          "description": "The dialog's subtitle. If you need to display HTML, use the `sublabel` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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).",
          "values": []
        },
        {
          "name": "dialog-role",
          "description": "The role of the internal native `<dialog>`, overriding its implicit `dialog` role — set\n`alertdialog` for an interruption the user has to answer before continuing. It lands on the\nnative element rather than the host, where a second role would announce the dialog twice\n(`rules/api-design.md`), and it is applied in render(), so it is in place before showModal()\nruns — a role stamped afterwards can miss the announcement.",
          "values": [{ "name": "alertdialog" }]
        },
        {
          "name": "dialog-description",
          "description": "A description announced when the dialog opens, wired to the native `<dialog>` through\n`aria-describedby`. Use it when the describing text sits outside this element's shadow root,\nwhere an ID reference cannot reach it — a wrapper composing ed-dialog is the case. A dialog\nwhose own body carries the text needs nothing here.",
          "values": []
        },
        {
          "name": "without-header",
          "description": "Disables the header. This will also remove the default close button.",
          "values": []
        },
        {
          "name": "without-close",
          "description": "Disables default close button.",
          "values": []
        },
        {
          "name": "light-dismiss",
          "description": "When enabled, the dialog will be closed when the user clicks outside of it. Has no effect on a\n`non-modal` dialog: the click lands on the page, which has no backdrop to catch it.",
          "values": []
        },
        {
          "name": "non-modal",
          "description": "Opens the dialog without blocking the page: no backdrop, no scroll lock, no focus trap, and the\ncontent behind it keeps taking clicks and keyboard focus. Use it for something the user works\n*with* the page on — a tool palette, a running log — rather than something they have to answer.\n\nThe dialog still lives in the top layer, so it is never covered by page content. `fullscreen`\nignores this: a dialog filling the viewport leaves nothing behind it to reach. `light-dismiss`\nstops working, because the UA sheet gives a popover's backdrop `pointer-events: none !important`\n(HTML Rendering, `:popover-open::backdrop`) and a click outside therefore reaches the page, not\nthe dialog.",
          "values": []
        },
        {
          "name": "header-alignment",
          "description": "This is for convenience to switch between stacked and inline headers when using a sublabel",
          "values": [{ "name": "stacked" }, { "name": "inline" }]
        },
        {
          "name": "resizable",
          "description": "Indicates whether the dialog is resizable",
          "values": []
        },
        {
          "name": "draggable",
          "description": "Indicates whether the dialog is draggable. The drag-handle is the header, so make sure to add one if draggable is used",
          "values": []
        },
        {
          "name": "fullscreen",
          "description": "Indicates whether the dialog is displayed fullscreen, occupying the entire viewport. While `fullscreen` is active,\n`resizable` and `draggable` are ignored; toggling it off restores their behavior.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dialog"
        }
      ]
    },
    {
      "name": "ed-alert-dialog",
      "description": "Alert dialogs interrupt the user with a brief, severity-coded message and at most a confirm/cancel choice.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the alert opens. Forwarded from the inner ed-dialog. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the alert opens and all animations complete. Forwarded from the inner ed-dialog.\n- **ed-hide** - Emitted before the alert closes. Forwarded from the inner ed-dialog; `event.detail.source` names the element that caused the close, and the dialog itself means [[Escape]], a click outside with `light-dismiss`, or a programmatic close. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the alert closes and all animations complete. Forwarded from the inner ed-dialog.\n- **ed-alert-dialog-confirm** - Emitted when the default-rendered confirm button is clicked. Cancelable; calling `preventDefault()` keeps the dialog open.\n- **ed-alert-dialog-cancel** - Emitted when the default-rendered cancel button is clicked. Cancelable; calling `preventDefault()` keeps the dialog open.\n\n### **Slots:**\n - _default_ - The message body.\n- **label** - Override the title (HTML). Its plain text becomes the dialog's accessible name when no `label` attribute is set.\n- **icon** - Override the default icon (HTML).\n- **footer** - Full override of footer buttons. When provided, `confirm-text` and `cancel-text` are ignored.\n\n### **CSS Parts:**\n - **panel** - The dialog's surface, its native `<dialog>` element, forwarded from the inner `<ed-dialog>`. Carries the frame, background and shadow.\n- **body** - The icon + content grid container.\n- **icon** - The icon wrapper.\n- **content** - The title + message wrapper.\n- **title** - The title element.\n- **message** - The message wrapper.\n- **footer** - The footer wrapper.",
      "attributes": [
        {
          "name": "open",
          "description": "Indicates whether the alert dialog is open. Toggle this attribute to show or hide the dialog.",
          "values": []
        },
        {
          "name": "type",
          "description": "The severity. Selects the icon and accent color.",
          "values": [
            { "name": "warning" },
            { "name": "error" },
            { "name": "info" },
            { "name": "help" }
          ]
        },
        {
          "name": "label",
          "description": "The heading text. If you need HTML, use the `label` slot. Not `title`: that global attribute shows a browser\ntooltip over the whole dialog.",
          "values": []
        },
        {
          "name": "confirm-text",
          "description": "If set, renders a primary confirm button with this label.",
          "values": []
        },
        {
          "name": "cancel-text",
          "description": "If set, renders a secondary cancel button with this label.",
          "values": []
        },
        {
          "name": "light-dismiss",
          "description": "Closes the alert when the user clicks outside it, as [[Escape]] does — a way back, not an answer, so it\nemits `ed-hide` and no `ed-alert-dialog-cancel`. Leave it off where the alert asks for a decision between\ntwo paths that both lead on.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/alert-dialog"
        }
      ]
    },
    {
      "name": "ed-animation",
      "description": "Animate elements declaratively with nearly 100 baked-in presets, or roll your own with custom keyframes. Powered by the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API).\n---\n\n\n### **Events:**\n - **ed-animation-cancel** - Emitted when the animation is canceled. Reports what already happened, so it is not cancelable.\n- **ed-animation-finish** - Emitted when the animation finishes. Reports what already happened, so it is not cancelable.\n- **ed-animation-start** - Emitted when the animation starts or restarts.\n\n### **Methods:**\n - **cancel()** - Clears all keyframe effects caused by this animation and aborts its playback.\n- **finish()** - Sets the playback time to the end of the animation corresponding to the current playback\ndirection.\n\nThrows `InvalidStateError` where there is no end to seek to: a playback rate of zero, or a\nplayback rate above zero with an effect end of infinity. Both reachable here, through\n`playback-rate=\"0\"` and through the default `iterations` of `Infinity`. The two conditions are\none rule, not two — `playback-rate=\"-1\"` with endless `iterations` seeks to the start and does\nnot throw. Measured in Chromium and Firefox. Under a reduced-motion preference the default is\nno longer endless, so the same call succeeds there.\n\nIt does nothing at all when there is no animation yet — before the first render, and while the\nelement is out of the document, which is also true of `cancel()`.\n\n### **Slots:**\n - _default_ - The element to animate. Avoid slotting in more than one element, as subsequent ones will be ignored. To animate multiple elements, either wrap them in a single container or use multiple `<ed-animation>` elements.",
      "attributes": [
        {
          "name": "name",
          "description": "The name of the built-in animation to use. For custom animations, use the `keyframes` prop.",
          "values": []
        },
        {
          "name": "play",
          "description": "Plays the animation. When omitted, the animation will be paused. This attribute will be automatically removed when\nthe animation finishes or gets canceled.\n\nFor a viewer who has asked their system for reduced motion, the run is squeezed into about a\nmillisecond and an endless animation is capped at one iteration, so nothing is seen to move and\nthe animation does reach an end. `delay`, `end-delay` and `playback-rate` are left alone, so\nthose still decide when the end arrives. One consequence has no counterpart without the\npreference: the default endless animation now finishes, which clears `play` — code that expects\n`play` to stay set should set it again rather than assume it.",
          "values": []
        },
        {
          "name": "delay",
          "description": "The number of milliseconds to delay the start of the animation.",
          "values": []
        },
        {
          "name": "direction",
          "description": "Determines the direction of playback as well as the behavior when reaching the end of an iteration.\n[Learn more](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction)",
          "values": [
            { "name": "alternate" },
            { "name": "alternate-reverse" },
            { "name": "normal" },
            { "name": "reverse" }
          ]
        },
        {
          "name": "duration",
          "description": "The number of milliseconds each iteration of the animation takes to complete.",
          "values": []
        },
        {
          "name": "easing",
          "description": "The easing function to use for the animation. This can be an easing function or a custom easing function\nsuch as `cubic-bezier(0, 1, .76, 1.14)`.",
          "values": []
        },
        {
          "name": "end-delay",
          "description": "The number of milliseconds to delay after the active period of an animation sequence.",
          "values": []
        },
        {
          "name": "fill",
          "description": "Sets how the animation applies styles to its target before and after its execution.",
          "values": [
            { "name": "auto" },
            { "name": "both" },
            { "name": "none" },
            { "name": "backwards" },
            { "name": "forwards" }
          ]
        },
        {
          "name": "iterations",
          "description": "The number of iterations to run before the animation completes. Defaults to `Infinity`, which loops.",
          "values": []
        },
        {
          "name": "iteration-start",
          "description": "The offset at which to start the animation, usually between 0 (start) and 1 (end).",
          "values": []
        },
        {
          "name": "playback-rate",
          "description": "Sets the animation's playback rate. The default is `1`, which plays the animation at a normal speed. Setting this\nto `2`, for example, will double the animation's speed. A negative value can be used to reverse the animation. This\nvalue can be changed without causing the animation to restart.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/animation"
        }
      ]
    },
    {
      "name": "ed-drawer",
      "description": "Drawers slide in from a container to expose additional options and information.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the drawer opens. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the drawer opens and all animations are complete.\n- **ed-hide** - 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.\n- **ed-after-hide** - Emitted after the drawer closes and all animations are complete.\n\n### **Methods:**\n - **connectedMoveCallback()** - An atomic move (`moveBefore`) runs this instead of the disconnect/reconnect pair. Firefox 151\nleaves a modal `<dialog>` in a shadow root open but no longer modal after it; Chromium 149 keeps\nit modal. Reopen only what the move broke.\n\n### **Slots:**\n - _default_ - The drawer's main content.\n- **label** - The drawer's label. Alternatively, you can use the `label` attribute.\n- **header-actions** - Optional actions to add to the header. Works best with `<ed-button>`.\n- **footer** - The drawer's footer, usually one or more buttons representing various options.\n\n### **CSS Properties:**\n - **--ed-drawer-spacing** - The amount of space around and between the drawer's content. _(default: undefined)_\n- **--ed-drawer-size** - The preferred size of the drawer. This will be applied to the drawer's width or height depending on its `placement`. Note that the drawer will shrink to accommodate smaller screens. _(default: undefined)_\n- **--ed-show-duration** - The animation duration when showing the drawer. _(default: var(--ed-transition-normal))_\n- **--ed-hide-duration** - The animation duration when hiding the drawer. _(default: var(--ed-transition-normal))_\n- **--ed-drawer-backdrop-filter** - A CSS filter, e.g. `blur(4px)`, applied to the backdrop element behind the drawer. _(default: undefined)_\n\n### **CSS Parts:**\n - **panel** - The drawer's sliding surface, the element the header, body and footer sit in. Carries the frame, background and shadow. At the viewport edge it is a native `<dialog>`, a `contained` drawer renders a `<div>` instead — the part is the same in both, so one selector reaches either.\n- **overlay** - The backdrop a `contained` drawer draws over its siblings. `contained` only.\n- **header** - The drawer's header. This element wraps the title and header actions.\n- **header-actions** - Optional actions to add to the header. Works best with `<ed-button>`.\n- **title** - The drawer's title.\n- **close-button** - The close button, a `<ed-button>`.\n- **close-button__base** - The close button's exported `base` part.\n- **body** - The drawer's body.\n- **footer** - The drawer's footer.",
      "attributes": [
        {
          "name": "open",
          "description": "Indicates whether or not the drawer is open. Toggle this attribute to show and hide the drawer.",
          "values": []
        },
        {
          "name": "label",
          "description": "The drawer's label as displayed in the header. You should always include a relevant label, as it is required for\nproper accessibility. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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).",
          "values": []
        },
        {
          "name": "placement",
          "description": "The direction from which the drawer will open.",
          "values": [
            { "name": "start" },
            { "name": "end" },
            { "name": "top" },
            { "name": "bottom" }
          ]
        },
        {
          "name": "without-header",
          "description": "Disables the header. This will also remove the default close button.",
          "values": []
        },
        {
          "name": "without-close",
          "description": "Disables the default close button while keeping the header visible.",
          "values": []
        },
        {
          "name": "light-dismiss",
          "description": "When enabled, the drawer will be closed when the user clicks outside of it.",
          "values": []
        },
        {
          "name": "with-footer",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `footer` element so the server-rendered markup\nincludes the footer before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "contained",
          "description": "By default, the drawer slides out of the viewport. To make it slide out of its parent element, set this attribute and add `position: relative` and `overflow: hidden` to the parent.",
          "values": []
        },
        {
          "name": "push",
          "description": "When used with `contained`, the drawer pushes adjacent content aside instead of overlaying it. The parent element must be a flex container.",
          "values": []
        },
        {
          "name": "without-modality",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/drawer"
        }
      ]
    },
    {
      "name": "ed-app",
      "description": "Application shell with header, navigation, content and footer regions.\n---\n\n\n### **Methods:**\n - **showNavigation()** - Shows the navigation\n- **hideNavigation()** - Hides the navigation\n- **toggleNavigation()** - Toggles the navigation\n\n### **Slots:**\n - _default_ - The page's main content, in one `<main>`: the shell sets no main landmark of its own.\n- **banner** - The banner that gets display above the header. The banner will not be shown if no content is provided.\n- **header** - The header to display at the top of the page. If a banner is present, the header will appear below the banner. The header will not be shown if there is no content.\n- **subheader** - A subheader to display below the `header`.\n- **menu** - The left side of the page. If you slot an element in here, you will override the default `navigation` slot and will be handling navigation on your own. This section \"sticks\" to the top as the page scrolls.\n- **navigation-header** - The header for the navigation area. On desktop this is at the top of the `<nav>`. On mobile it renders as the header of `<ed-drawer>`.\n- **navigation** - The main content to display in the navigation area. On desktop it is displayed in a `<nav>` on the left side. On mobile it renders inside `<ed-drawer>`.\n- **navigation-footer** - The footer for the navigation area. On desktop this is at the bottom of the `<nav>`. On mobile it renders as the footer of `<ed-drawer>`.\n- **navigation-toggle** - Use this slot to slot in your own button + icon for toggling the navigation. By default it is an `<ed-button>` with a menu `<ed-icon>`.\n- **navigation-toggle-icon** - Use this to slot in your own icon for toggling the navigation. By default it is a menu `<ed-icon>`.\n- **main-header** - Breadcrumbs above the main content. The page title is not part of it: the `<h1>` opens the `<main>`, inside the main landmark.\n- **main-footer** - Footer to display inline below the main content.\n- **aside** - Content to be shown on the right side of the page. Typically contains a table of contents, ads, etc. This section \"sticks\" to the top as the page scrolls.\n- **skip-to-content** - The \"skip to content\" slot. You can override this if you would like to customize the `Skip to content` button or add additional \"Skip to X\" links.\n- **footer** - The content to display in the footer. This is always displayed underneath the viewport so will always make the page \"scrollable\".\n\n### **CSS Properties:**\n - **--ed-app-banner-height** - The height of the banner. This gets calculated when the page initializes. If the height is known, you can set it here to prevent shifting when the page loads. _(default: 0px)_\n- **--ed-app-header-height** - The height of the header. This gets calculated when the page initializes. If the height is known, you can set it here to prevent shifting when the page loads. _(default: 0px)_\n- **--ed-app-subheader-height** - The height of the subheader. This gets calculated when the page initializes. If the height is known, you can set it here to prevent shifting when the page loads. _(default: 0px)_\n- **--ed-app-footer-height** - 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. _(default: 0px)_\n- **--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. _(default: undefined)_\n- **--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. _(default: undefined)_\n- **--ed-app-subheader-top** - The subheader's term in that same sum. _(default: undefined)_\n- **--ed-app-scroll-margin-top** - 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. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **banner** - The banner to show above header.\n- **header** - The header, usually for top level navigation / branding.\n- **subheader** - Shown below the header.\n- **body** - The wrapper around menu, main, and aside.\n- **menu** - The left hand side of the page. Generally intended for navigation.\n- **navigation** - The `<nav>` that wraps the navigation slots on desktop viewports.\n- **navigation-desktop** - A second name carried by that same `<nav>`.\n- **navigation-header** - The slot that projects the navigation header into the mobile `<ed-drawer>`'s label. The desktop `<nav>` has no counterpart.\n- **navigation-toggle** - The default `<ed-button>` that toggles the navigation.\n- **navigation-toggle-icon** - The default `<ed-icon>` displayed inside the navigation-toggle button.\n- **main** - The center column of the body, holding the main header, content and footer.\n- **main-header** - The header above main content.\n- **main-content** - The main content.\n- **main-footer** - The footer below main content.\n- **aside** - The right hand side of the page. Used for things like table of contents, ads, etc.\n- **skip-to-content** - The \"skip to main content\" link.\n- **footer** - The footer of the page. This is always below the initial viewport size.\n- **drawer** - The mobile navigation `<ed-drawer>`.\n- **drawer__panel** - The mobile navigation drawer's exported `panel` part, its sliding surface.\n- **drawer__header** - The mobile navigation drawer's exported `header` part, wrapping the title and header actions.\n- **drawer__header-actions** - The mobile navigation drawer's exported `header-actions` part.\n- **drawer__title** - The mobile navigation drawer's exported `title` part, filled from the `mobile-navigation-header` slot.\n- **drawer__close-button** - The mobile navigation drawer's exported `close-button` part, an `<ed-button>`.\n- **drawer__close-button__base** - The mobile navigation drawer's exported `close-button__base` part, that button's own `base`.\n- **drawer__body** - The mobile navigation drawer's exported `body` part, holding the navigation itself.\n- **drawer__footer** - The mobile navigation drawer's exported `footer` part.",
      "attributes": [
        {
          "name": "view",
          "description": "The view is a reflection of the \"mobileBreakpoint\", when the page is larger than the `mobile-breakpoint` (768px by\ndefault), it is considered to be a \"desktop\" view. The view is merely a way to distinguish when to show/hide the\nnavigation. You can use additional media queries to make other adjustments to content as necessary.\nThe default is \"desktop\" because the \"mobile navigation drawer\" isn't accessible via SSR due to drawer requiring JS.",
          "values": [{ "name": "mobile" }, { "name": "desktop" }]
        },
        {
          "name": "desktop-nav-open",
          "description": "Whether the desktop navigation is open.",
          "values": []
        },
        {
          "name": "mobile-nav-open",
          "description": "Whether the mobile navigation drawer is open.",
          "values": []
        },
        {
          "name": "mobile-breakpoint",
          "description": "At what page width to hide the \"navigation\" slot and collapse into a hamburger button.\nAccepts both numbers (interpreted as px) and CSS lengths (e.g. `50em`), which are resolved based on the root element.",
          "values": []
        },
        {
          "name": "navigation-placement",
          "description": "Where to place the navigation when in the mobile viewport.",
          "values": [{ "name": "start" }, { "name": "end" }]
        },
        {
          "name": "disable-navigation-toggle",
          "description": "Determines whether to hide the default hamburger button.\nThis will automatically flip to \"true\" if you add an element with `data-toggle-nav` anywhere in the element light DOM,\nand to \"false\" when there is navigation content. Setting it to \"true\" yourself, by attribute or property, stops the\nautomatic detection and hides the button for good — for a toggle it cannot see, such as one inside another\ncomponent's shadow root, and for SSR's initial page load. Setting it back to \"false\" hands the decision to the\ndetection again.",
          "values": []
        },
        {
          "name": "hide-desktop-navigation-toggle",
          "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.",
          "values": []
        },
        {
          "name": "disable-sticky",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/app"
        }
      ]
    },
    {
      "name": "ed-avatar",
      "description": "Shows a person or entity as a photo, initials or icon, so users recognize at a glance who is meant.\n---\n\n\n### **Events:**\n - **ed-error** - The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some unknown cause.\n\n### **Slots:**\n - **icon** - The default icon to use when no image or initials are present. Works best with `<ed-icon>`.\n\n### **CSS Properties:**\n - **--ed-avatar-size** - The size of the avatar. _(default: undefined)_\n\n### **CSS Parts:**\n - **icon** - The container that wraps the avatar's icon.\n- **initials** - The container that wraps the avatar's initials.\n- **image** - The avatar image. Only shown when the `image` attribute is set.",
      "attributes": [
        {
          "name": "image",
          "description": "The image source to use for the avatar.",
          "values": []
        },
        {
          "name": "label",
          "description": "A label to use to describe the avatar to assistive devices.",
          "values": []
        },
        {
          "name": "initials",
          "description": "Initials to use as a fallback when no image is available (1-2 characters max recommended).",
          "values": []
        },
        {
          "name": "loading",
          "description": "Indicates how the browser should load the image.",
          "values": [{ "name": "eager" }, { "name": "lazy" }]
        },
        {
          "name": "variant",
          "description": "The avatar's theme variant. It tints the background and the initials or icon.",
          "values": [
            { "name": "new" },
            { "name": "warning" },
            { "name": "brand" },
            { "name": "ai" },
            { "name": "info" },
            { "name": "neutral" },
            { "name": "success" },
            { "name": "danger" }
          ]
        },
        {
          "name": "shape",
          "description": "The shape of the avatar.",
          "values": [
            { "name": "circle" },
            { "name": "square" },
            { "name": "rounded" }
          ]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/avatar"
        }
      ]
    },
    {
      "name": "ed-badge",
      "description": "Badges are used to draw attention and display statuses, counts or filters.\n---\n\n\n### **Events:**\n - **ed-remove** - 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.\n\n### **Slots:**\n - _default_ - The badge's content.\n- **start** - Content placed before the badge's main content. Typically used for icons.\n- **end** - Content placed after the badge's main content. Typically used for icons. When `with-remove` is set, the default content is a remove button that emits `ed-remove` when activated by click, Enter or Space.\n\n### **CSS Properties:**\n - **--ed-badge-pulse-color** - The color of the badge's pulse effect when using `attention=\"pulse\"`. _(default: undefined)_\n- **--ed-badge-notification-color-scheme** - The `color-scheme` inside a notification badge, so its colors stay put when the badge sits on a surface of the other scheme. _(default: light)_\n- **--ed-badge-notification-alt-color-scheme** - The same for the alternate notification badge. _(default: light)_\n\n### **CSS Parts:**\n - **remove-icon** - The remove button shown when `with-remove` is set.\n- **base** - The component's base wrapper.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.",
      "attributes": [
        {
          "name": "variant",
          "description": "The badge's theme variant.",
          "values": [
            { "name": "new" },
            { "name": "notification" },
            { "name": "warning" },
            { "name": "brand" },
            { "name": "ai" },
            { "name": "info" },
            { "name": "neutral" },
            { "name": "success" },
            { "name": "danger" },
            { "name": "expired" },
            { "name": "notification-alt" }
          ]
        },
        {
          "name": "pill",
          "description": "Draws a pill-style badge with rounded edges. Mainly used to display filters",
          "values": []
        },
        {
          "name": "attention",
          "description": "Adds an animation to draw attention to the badge.",
          "values": [
            { "name": "none" },
            { "name": "pulse" },
            { "name": "bounce" }
          ]
        },
        {
          "name": "with-remove",
          "description": "Makes the badge removable and shows a remove button. Although you could use removable without pill, our styleguide requires that only pill styled badges can be removable",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "The badge's accessible name. The only way to name a badge with no content, which renders as a dot. Mirrored onto the internal status node, where the role lives — an aria-label left on the host\nalone would sit on a role-less element and be ignored by assistive tech.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/badge"
        }
      ]
    },
    {
      "name": "ed-breadcrumb-item",
      "description": "One link in a breadcrumb trail that points to a level of the page hierarchy.\n---\n\n\n### **Slots:**\n - _default_ - The breadcrumb item's label.\n- **start** - An element, such as `<ed-icon>`, placed before the label.\n- **end** - An element, such as `<ed-icon>`, placed after the label.\n- **separator** - The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<ed-breadcrumb>` instead.\n\n### **CSS Parts:**\n - **label** - The breadcrumb item's label.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.\n- **separator** - The container that wraps the separator.",
      "attributes": [
        {
          "name": "href",
          "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead. 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.",
          "values": []
        },
        {
          "name": "target",
          "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.",
          "values": []
        },
        {
          "name": "rel",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/breadcrumb-item"
        }
      ]
    },
    {
      "name": "ed-breadcrumb",
      "description": "A trail of links showing where the current page sits in a hierarchy, so users can jump back up to a parent\nlevel.\n---\n\n\n### **Slots:**\n - _default_ - One or more breadcrumb items to display.\n- **separator** - The separator to use between breadcrumb items. Works best with `<ed-icon>`.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
      "attributes": [
        {
          "name": "label",
          "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
          "values": []
        },
        {
          "name": "variant",
          "description": "The breadcrumb's visual variant.",
          "values": [
            { "name": "inline" },
            { "name": "inline-title" },
            { "name": "title" }
          ]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/breadcrumb"
        }
      ]
    },
    {
      "name": "ed-button-group",
      "description": "Button groups can be used to group related buttons into sections.\n---\n\n\n### **Slots:**\n - _default_ - One or more `<ed-button>` elements to display in the button group.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
      "attributes": [
        {
          "name": "label",
          "description": "A label to use for the button group. This won't be displayed on the screen, but it will be announced by assistive\ndevices when interacting with the control and is strongly recommended.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "The button group's orientation.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/button-group"
        }
      ]
    },
    {
      "name": "ed-divider",
      "description": "Dividers are used to visually separate or group elements.\n---\n\n\n### **Slots:**\n - _default_ - An optional label shown on the divider, such as \"or\" between two ways to sign in.\n\n### **CSS Properties:**\n - **--ed-divider-color** - The color of the divider. _(default: var(--ed-color-border))_\n- **--ed-divider-width** - The width of the divider. _(default: var(--ed-border-width-1))_\n- **--ed-divider-spacing** - The spacing of the divider. _(default: var(--ed-space-4))_\n- **--ed-divider-label-spacing** - The space between the label and the lines beside it. _(default: var(--ed-space-3))_\n- **--ed-divider-label-offset** - The length of the line between the divider's edge and a label placed at the start or the end. _(default: 0)_\n\n### **CSS Parts:**\n - **label** - The container that wraps the label.",
      "attributes": [
        {
          "name": "orientation",
          "description": "Sets the divider's orientation.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "with-label",
          "description": "Only needed for server-side rendering: set it when a label is slotted in, so the server-rendered markup lays\nthe label out before the component hydrates. On the client the divider detects the label itself.",
          "values": []
        },
        {
          "name": "label-placement",
          "description": "Where the label sits along the divider.",
          "values": [
            { "name": "start" },
            { "name": "end" },
            { "name": "center" }
          ]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/divider"
        }
      ]
    },
    {
      "name": "ed-calendar",
      "description": "An always-visible day grid for picking a date, a range, or a whole week, month, quarter or year.\n---\n\n\n### **Events:**\n - **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- **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### **Methods:**\n - **focus(options: _FocusOptions_): _void_** - 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.\n\n### **Slots:**\n - **footer** - Custom footer content (e.g. a \"Today\" jump button). Rendered as the first row of the footer.\n- **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### **CSS Parts:**\n - **base** - The outer wrapper element.\n- **header** - The row of page controls above the body. Not rendered for `type=\"year\"`, whose list is a single page.\n- **header-spacer** - The flexible gap between the month and year cyclers.\n- **cycler** - Each cycler block: the month cycler for `type=\"date\"` and `type=\"week\"`, the year cycler for every type that has pages.\n- **cycler-month** - The month cycler block.\n- **cycler-year** - The year cycler block.\n- **cycler-prev** - A cycler's previous-page button.\n- **cycler-next** - A cycler's next-page button.\n- **cycler-trigger** - A cycler's menu trigger (shows the current month or year, opens the in-surface menu).\n- **range-month-label** - A read-only \"Month Year\" label shown above each calendar in two-panel range mode (one per panel).\n- **body** - The body area below the header. Contains the day grid or the active picker menu.\n- **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- **picker-menu-primary** - Only the list a click selects from, as opposed to a cycler's navigation menu.\n- **picker-item** - Each menu item in the picker menu.\n- **picker-item-selected** - The currently-selected menu item.\n- **footer-divider** - The divider between the panel content and the footer. Only visible when the footer is.\n- **footer** - The footer wrapper. Only visible when at least one footer slot has content.\n- **footer-row** - Each row inside the footer (first row = `footer` slot, second row = `footer-controls` slot).\n- **footer-row-custom** - The first footer row (the `footer` slot).\n- **footer-row-controls** - The second footer row (the `footer-controls` slot).\n- **grid** - The day grid container.\n- **weekday-header-row** - The row of weekday column headers.\n- **weekday-header-cell** - Each weekday column header cell.\n- **day-row** - Each body row of day cells.\n- **day-cell** - Each day cell button.\n- **day-cell-label** - The inner state layer of a day cell (holds the digit; carries the selected/endpoint circle and the today ring).\n- **day-cell-today** - The day cell for today.\n- **day-cell-selected** - A selected day cell (single-selection strategy).\n- **day-cell-start** - The first cell of a span: the range start, or the Monday of the picked week.\n- **day-cell-in-range** - A cell inside a span.\n- **day-cell-end** - The last cell of a span: the range end, or the Sunday of the picked week.\n- **day-cell-preview-start** - The preview start cell while a range is being built.\n- **day-cell-preview-in-range** - A cell inside the in-progress preview range.\n- **day-cell-preview-end** - The preview end cell while a range is being built.\n- **panel** - Wrapper around each panel (header + body). Two are rendered while a range is live, one otherwise.\n- **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.",
      "attributes": [
        {
          "name": "value",
          "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.",
          "values": []
        },
        {
          "name": "start",
          "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.",
          "values": []
        },
        {
          "name": "end",
          "description": "The end of the selected range, in the same wire form as value.",
          "values": []
        },
        {
          "name": "min",
          "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.",
          "values": []
        },
        {
          "name": "max",
          "description": "The latest selectable value, in the same forms as min. Empty for no bound.",
          "values": []
        },
        {
          "name": "default-month",
          "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.",
          "values": []
        },
        {
          "name": "show-week-numbers",
          "description": "When true, a week-number column is shown in the day grid.",
          "values": []
        },
        {
          "name": "first-day-of-week",
          "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.",
          "values": [
            { "name": "1" },
            { "name": "2" },
            { "name": "3" },
            { "name": "4" },
            { "name": "5" },
            { "name": "6" },
            { "name": "7" },
            { "name": "auto" }
          ]
        },
        {
          "name": "range",
          "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.",
          "values": []
        },
        {
          "name": "panels",
          "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`.",
          "values": []
        },
        {
          "name": "type",
          "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`.",
          "values": [
            { "name": "year" },
            { "name": "month" },
            { "name": "quarter" },
            { "name": "week" },
            { "name": "date" },
            { "name": "halfyear" }
          ]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/calendar"
        }
      ]
    },
    {
      "name": "ed-card",
      "description": "A framed container that previews one or more items — a project, an article, a KPI — so users can scan it and\nopen it.\n---\n\n\n### **Events:**\n - **click** - Standard click event. When the card is `interactive`, it is also emitted on keyboard activation (Enter or Space).\n- **change** - Emitted when a `selectable` card toggles its `checked` state, by pointer click or Space.\n\n### **Slots:**\n - _default_ - The card's main content.\n- **header** - The card's title. Any element works; an `<h3>` gives the card a place in the page outline and looks the same as plain text there, while another heading level keeps its own size.\n- **header-start** - An optional icon before the title.\n- **header-end** - An optional badge or action at the end of the header. Shown alongside a title, not instead of one: without `header` (or `with-header`) the card draws no header, and content placed in `header-start` or `header-end` stays hidden.\n- **footer** - An optional footer for the card, typically a link or an action.\n\n### **CSS Properties:**\n - **--ed-card-spacing** - The space between the card's border and its content. Expects a single value. _(default: var(--ed-space-4))_\n\n### **CSS Parts:**\n - **header** - The container that wraps the card's header.\n- **title** - The container that wraps the `header` slot. It takes the space `header-start` and `header-end` leave.\n- **body** - The container that wraps the card's main content. It takes the free space of a card stretched taller than its content, so the footer sits at the bottom edge.\n- **footer** - The container that wraps the card's footer.",
      "attributes": [
        {
          "name": "appearance",
          "description": "The card's visual appearance.",
          "values": [
            { "name": "filled-outlined" },
            { "name": "filled" },
            { "name": "outlined" },
            { "name": "plain" }
          ]
        },
        {
          "name": "with-header",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `header` element so the server-rendered markup\nincludes the header before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-footer",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `footer` element so the server-rendered markup\nincludes the footer before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "interactive",
          "description": "Turns the card into a button: it gains hover/pressed styling, becomes focusable (`role=\"button\"`,\n`tabindex=\"0\"`) and is activated by pointer or keyboard (Enter or Space), which emits a `click`.\nThe card owns no state — react to `click` to drive navigation, opening a detail view, etc.\n\nDo not combine this with controls in the `header-end` / `footer` slots.\nThe card takes its accessible name from its content, so a slotted button's label becomes part of\nthe card's own name, and the control is then announced twice — once inside the name of the\nbutton that contains it. Measured in Chromium and Firefox; `stopPropagation` addresses only the\nclick bubbling, not this. Keep the card non-interactive when it carries actions.",
          "values": []
        },
        {
          "name": "selectable",
          "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.",
          "values": []
        },
        {
          "name": "checked",
          "description": "The checked state of a `selectable` card. Reflected to `aria-checked`. No effect without `selectable`.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/card"
        }
      ]
    },
    {
      "name": "ed-carousel",
      "description": "Carousels display an arbitrary number of content slides along a horizontal or vertical axis.\n---\n\n\n### **Events:**\n - **ed-slide-change** - Emitted when the active slide changes.\n\n### **Methods:**\n - **previous(behavior: _ScrollBehavior_)** - Move the carousel backward by `slides-per-move` slides.\n- **next(behavior: _ScrollBehavior_)** - Move the carousel forward by `slides-per-move` slides.\n- **goToSlide(index: _number_, behavior: _ScrollBehavior_)** - Scrolls the carousel to the slide specified by `index`.\n\n### **Slots:**\n - _default_ - The carousel's main content, one or more `<ed-carousel-item>` elements.\n- **next-icon** - Optional next icon to use instead of the default. Works best with `<ed-icon>`.\n- **previous-icon** - Optional previous icon to use instead of the default. Works best with `<ed-icon>`.\n\n### **CSS Properties:**\n - **--ed-carousel-aspect-ratio** - The aspect ratio of each slide. _(default: 16/9)_\n- **--ed-carousel-scroll-hint** - The amount of padding to apply to the scroll area, allowing adjacent slides to become partially visible as a scroll hint. _(default: undefined)_\n- **--ed-carousel-slide-gap** - The space between each slide. _(default: var(--ed-space-4))_\n\n### **CSS Parts:**\n - **base** - The carousel's internal wrapper.\n- **scroll-container** - The scroll container that wraps the slides.\n- **pagination** - The pagination indicators wrapper.\n- **pagination-item** - The pagination indicator.\n- **pagination-item-active** - Applied when the item is active.\n- **navigation** - The navigation wrapper.\n- **navigation-button** - The navigation button.\n- **navigation-button-previous** - Applied to the previous button.\n- **navigation-button-next** - Applied to the next button.",
      "attributes": [
        {
          "name": "loop",
          "description": "When set, allows the user to navigate the carousel in the same direction indefinitely.",
          "values": []
        },
        {
          "name": "navigation",
          "description": "When set, show the previous/next navigation arrows beside the carousel. Ignored in vertical orientation.",
          "values": []
        },
        {
          "name": "pagination",
          "description": "When set, show the carousel's pagination indicators.",
          "values": []
        },
        {
          "name": "pagination-variant",
          "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.",
          "values": [{ "name": "dots" }, { "name": "buttons" }]
        },
        {
          "name": "autoplay",
          "description": "When set, the slides will scroll automatically when the user is not interacting with them.",
          "values": []
        },
        {
          "name": "autoplay-interval",
          "description": "Specifies the amount of time, in milliseconds, between each automatic scroll.",
          "values": []
        },
        {
          "name": "slides-per-page",
          "description": "Specifies how many slides should be shown at a given time.",
          "values": []
        },
        {
          "name": "slides-per-move",
          "description": "Specifies the number of slides the carousel will advance when scrolling, useful when specifying a `slides-per-page`\ngreater than one. It can't be higher than `slides-per-page`.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "Specifies the orientation in which the carousel will lay out.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "mouse-dragging",
          "description": "When set, it is possible to scroll through the slides by dragging them with the mouse.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/carousel"
        }
      ]
    },
    {
      "name": "ed-checkbox-group",
      "description": "Checkbox groups wrap a set of related checkboxes or switches so they share a label, hint, and grouping\nsemantics.\n---\n\n\n### **Slots:**\n - _default_ - The default slot where `<ed-checkbox>` or `<ed-switch>` elements are placed.\n- **label** - The checkbox group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.\n- **hint** - Text that describes how to use the checkbox group. Alternatively, you can use the `hint` attribute.\n\n### **CSS Parts:**\n - **form-control** - The fieldset that wraps the label, the checkboxes, and the hint — the group assistive technology and `getByRole('group')` find.\n- **form-control-label** - The label's wrapper.\n- **base** - The element that wraps the grouped checkboxes.\n- **hint** - The hint's wrapper.",
      "attributes": [
        {
          "name": "aria-label",
          "description": "Accessible name for when no visible label is given. Mirrored onto the internal fieldset, which\nis the group — the host is deliberately role-less, so a consumer's aria-label would otherwise\nsit on an element assistive technology ignores.\n\nA visible label wins: the node references it with `aria-labelledby` while there is one, and\nonly then — accessible-name computation consults aria-labelledby first.",
          "values": []
        },
        { "name": "label", "values": [] },
        {
          "name": "hint",
          "description": "The checkbox group's hint. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "The orientation in which to show grouped checkboxes.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "required",
          "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.",
          "values": []
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes\nthe label before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes\nthe hint before the component hydrates on the client.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/checkbox-group"
        }
      ]
    },
    {
      "name": "ed-select",
      "description": "Lets the user pick one value, or several, from a dropdown list of predefined options in a form or filter.\n---\n\n\n### **Events:**\n - **input** - Emitted when the control receives input.\n- **change** - Emitted when the control's value changes.\n- **focus** - Emitted when the control gains focus.\n- **blur** - Emitted when the control loses focus.\n- **ed-clear** - Emitted when the control's value is cleared.\n- **ed-show** - Emitted when the select's menu opens. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the select's menu opens and all animations are complete.\n- **ed-hide** - Emitted when the select's menu closes. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the select's menu closes and all animations are complete.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n \n- **show()** - Shows the listbox.\n- **hide()** - Hides the listbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the control.\n- **blur()** - Removes focus from the control.\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - _default_ - The listbox options. Must be `<ed-option>` elements. You can use `<ed-divider>` to group items visually.\n- **label** - The input's label. Alternatively, you can use the `label` attribute.\n- **start** - An element, such as `<ed-icon>`, placed at the start of the combobox.\n- **end** - An element, such as `<ed-icon>`, placed at the end of the combobox.\n- **clear-icon** - An icon to use in lieu of the default clear icon.\n- **expand-icon** - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--ed-show-duration** - The duration of the show animation. _(default: var(--ed-transition-fast))_\n- **--ed-hide-duration** - The duration of the hide animation. _(default: var(--ed-transition-fast))_\n- **--ed-select-tag-max-size** - When using `multiple`, the max size of tags before their content is truncated. _(default: 10ch)_\n- **--ed-select-width** - The width of the control. Defaults to filling its container. _(default: 100%)_\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and hint.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The select's wrapper.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.\n- **base** - The bordered field box. An alias for `combobox`, so a selector written against another form control reaches the same element here.\n- **combobox** - The container the wraps the start, end, value, clear icon, and expand button.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.\n- **display-input** - The element that displays the selected option's label, an `<input>` element.\n- **panel** - The floating surface holding the options. Carries the frame, background and shadow.\n- **tags** - The container that houses option tags when `multiselect` is used.\n- **tag** - The individual tags that represent each multiselect option.\n- **tag__base** - The tag's exported `base` part, the badge's surface.\n- **tag__remove-icon** - The tag's exported `remove-icon` part, the `<button>` that removes the option.\n- **clear-button** - The clear button.\n- **expand-icon** - The container that wraps the expand icon.",
      "attributes": [
        {
          "name": "name",
          "description": "The name of the select, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "value",
          "description": "The select's value. This will be a string for single select or an array for multi-select.",
          "values": []
        },
        {
          "name": "density",
          "description": "Controls the component's spacing density without affecting font-size.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "placeholder",
          "description": "Placeholder text to show as a hint when the select is empty.",
          "values": []
        },
        {
          "name": "multiple",
          "description": "Allows more than one option to be selected.",
          "values": []
        },
        {
          "name": "max-options-visible",
          "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
          "values": []
        },
        {
          "name": "readonly",
          "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.",
          "values": []
        },
        {
          "name": "with-clear",
          "description": "Adds a clear button when the select is not empty.",
          "values": []
        },
        {
          "name": "open",
          "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
          "values": []
        },
        {
          "name": "pill",
          "description": "Draws a pill-style select with rounded edges.",
          "values": []
        },
        {
          "name": "label",
          "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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).",
          "values": []
        },
        {
          "name": "placement",
          "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
          "values": [{ "name": "top" }, { "name": "bottom" }]
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "required",
          "description": "The select's required attribute.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/select"
        }
      ]
    },
    {
      "name": "ed-option",
      "description": "One selectable entry of an ed-select or ed-combobox, with a value, a label and optional start and end\ncontent.\n---\n\n\n### **Methods:**\n - **getChildOptions(): _EdOption[]_** - Returns the nested options one level down.\n\n### **Slots:**\n - _default_ - The option's label.\n- **children** - Nested options, projected automatically. Only rendered inside a combobox with `tree`; do not assign this slot yourself.\n- **start** - An element, such as `<ed-icon>`, placed before the label.\n- **end** - An element, such as `<ed-icon>`, placed after the label.\n\n### **CSS Parts:**\n - **checkbox** - The checkbox that shows the selection in a multi-select control, an `<ed-checkbox>` element.\n- **checkbox__base** - The checkbox's exported `base` part.\n- **checkbox__control** - The checkbox's exported `control` part.\n- **checkbox__checked-icon** - The checkbox's exported `checked-icon` part.\n- **checkbox__label** - The checkbox's exported `label` part.\n- **checked-icon** - The checked icon, a `<ed-icon>` element. Single-select controls only.\n- **row** - The row itself, in tree mode. Carries the padding, background and selection styling.\n- **indentation** - The spacer that indents the row by its depth, in tree mode.\n- **expand-button** - The chevron that expands and collapses a branch, in tree mode.\n- **children** - The container holding nested options, in tree mode.\n- **label** - The option's label.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.",
      "attributes": [
        {
          "name": "expanded",
          "description": "Whether nested options are shown. Only meaningful on a branch in tree mode.",
          "values": []
        },
        {
          "name": "value",
          "description": "The option's value. When selected, the containing form control will receive this value. The value must be unique\nfrom other options in the same group; spaces are allowed, since a multi-select submits one entry per option\nrather than a single delimited string.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Draws the option in a disabled state, preventing selection.",
          "values": []
        },
        {
          "name": "selected",
          "description": "Selects an option initially.",
          "values": []
        },
        {
          "name": "label",
          "description": "The option’s plain text label.\nUsually automatically generated, but can be useful to provide manually for cases involving complex content.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/option"
        }
      ]
    },
    {
      "name": "ed-combobox",
      "description": "Comboboxes combine a text input with a listbox, allowing users to filter and select from predefined options or enter custom values.\n---\n\n\n### **Events:**\n - **input** - Emitted when the control receives input.\n- **change** - Emitted when the control's value changes.\n- **focus** - Emitted when the control gains focus.\n- **blur** - Emitted when the control loses focus.\n- **ed-clear** - Emitted when the control's value is cleared.\n- **ed-show** - Emitted when the select's menu opens. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the select's menu opens and all animations are complete.\n- **ed-hide** - Emitted when the select's menu closes. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the select's menu closes and all animations are complete.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n- **ed-combobox-options-request** - Emitted in server mode whenever options are requested: when the list opens, with an empty query; once the typing rests, with the typed text; and on `reload()`. The detail is `{ query, signal }`; the signal aborts once a newer request overtakes it. Emitted with a `dataSource` as well. With `server` alone, answer it by swapping the `<ed-option>` children and setting `loading` to false.\n- **ed-combobox-options-error** - Emitted when the `dataSource` fails a request that is still current. The detail is `{ error, request: { query } }`.\n\n### **Methods:**\n \n- **show()** - Shows the listbox.\n- **hide()** - Hides the listbox.\n- **reload(): _Promise<void>_** - Asks the server again for the options, with the text typed since the list opened, or an empty query. With a\n`dataSource` it resolves once the newest answer is applied — where typing overtakes this request, that is the\nanswer to the typing — or once that request fails, which is reported through `ed-combobox-options-error`\ninstead of rejecting. With `server` alone it resolves right after `ed-combobox-options-request`. Removing the\ncombobox resolves it as well. Outside server mode it resolves at once.\n- **focus(options: _FocusOptions_)** - Sets focus on the control.\n- **blur()** - Removes focus from the control.\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - _default_ - 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.\n- **label** - The input's label. Alternatively, you can use the `label` attribute.\n- **start** - An element, such as `<ed-icon>`, placed at the start of the combobox.\n- **end** - An element, such as `<ed-icon>`, placed at the end of the combobox.\n- **clear-icon** - An icon to use in lieu of the default clear icon.\n- **no-results** - Content shown when no option matches the current input. Rendered outside the listbox, because an inert hint is not a selectable option. Alternatively, use the no-results-label attribute for plain text.\n- **empty** - Content shown in server mode when the server has no options for an empty query. Its text is announced.\n- **loading** - Content shown in server mode while options are being requested and none are showing. Its text is announced.\n- **error** - Content shown in server mode when the last request for options failed, in place of the list. Its text is announced.\n- **expand-icon** - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--ed-show-duration** - The duration of the show animation. _(default: var(--ed-transition-fast))_\n- **--ed-hide-duration** - The duration of the hide animation. _(default: var(--ed-transition-fast))_\n- **--ed-combobox-tag-max-size** - When using `multiple`, the max size of tags before their content is truncated. _(default: 10ch)_\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and hint.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The select's wrapper.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.\n- **combobox** - The container the wraps the start, end, value, clear icon, and expand button.\n- **base** - The bordered field box. An alias for `input`, so a selector written against another form control reaches the same element here.\n- **input** - The element carrying the field's border and background.\n- **expand-icon-slot** - The slot holding the expand icon.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.\n- **display-input** - The element that displays the selected option's label, an `<input>` element.\n- **panel** - The floating surface, carrying the frame, background and shadow. It holds the option list while something matches and the no-match message once nothing does, so one selector reaches the dropdown in either state. Sizing it past the field's own width is not corrected when the field sits near a viewport edge: the popup is positioned on its own box, which `sync=\"width\"` pins to the field, so collision handling never sees the wider child.\n- **listbox** - The scrolling list of options inside the panel. Use it for the list itself — its height, or how far it scrolls — rather than for the dropdown's framing. A height belongs here and not on `panel`: the panel clips to its own corners, so limiting its height cuts options off instead of scrolling them.\n- **listbox-tree** - Added to the list when `tree` is set and it carries role=\"tree\".\n- **status** - The message sitting in the panel in place of the list, whichever it is. Also carries the part of its kind.\n- **no-results** - The message shown when nothing matches, sitting in the panel in place of the list.\n- **empty** - The message shown in server mode when there are no options for an empty query.\n- **loading** - The message shown in server mode while options load and none are showing.\n- **error** - The message shown in server mode when the last request for options failed.\n- **tags** - The container that houses option tags when `multiselect` is used.\n- **tag** - The individual tags that represent each multiselect option.\n- **tag__base** - The tag's exported `base` part, the badge's surface.\n- **tag__remove-icon** - The tag's exported `remove-icon` part, the `<button>` that removes the option.\n- **clear-button** - The clear button.\n- **expand-icon** - The container that wraps the expand icon.",
      "attributes": [
        {
          "name": "name",
          "description": "The name of the select, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "value",
          "description": "The select's value. This will be a string for single select or an array for multi-select.",
          "values": []
        },
        {
          "name": "density",
          "description": "Controls the component's spacing density without affecting font-size.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "placeholder",
          "description": "Placeholder text to show as a hint when the select is empty.",
          "values": []
        },
        {
          "name": "multiple",
          "description": "Allows more than one option to be selected.",
          "values": []
        },
        {
          "name": "max-options-visible",
          "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
          "values": []
        },
        {
          "name": "readonly",
          "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.",
          "values": []
        },
        {
          "name": "with-clear",
          "description": "Adds a clear button when the select is not empty.",
          "values": []
        },
        {
          "name": "open",
          "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
          "values": []
        },
        {
          "name": "pill",
          "description": "Draws a pill-style select with rounded edges.",
          "values": []
        },
        {
          "name": "label",
          "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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).",
          "values": []
        },
        {
          "name": "placement",
          "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
          "values": [{ "name": "top" }, { "name": "bottom" }]
        },
        {
          "name": "with-label",
          "description": "Used for SSR purposes when a label is slotted in. Will show the label on first render.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Used for SSR purposes when hint is slotted in. Will show the hint on first render.",
          "values": []
        },
        {
          "name": "required",
          "description": "The select's required attribute.",
          "values": []
        },
        {
          "name": "no-results-label",
          "description": "The text shown in the listbox when no option matches the current input. Defaults to a localized label.\nTo render custom markup instead, use the `no-results` slot.",
          "values": []
        },
        {
          "name": "allow-custom-value",
          "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.",
          "values": []
        },
        {
          "name": "tree",
          "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.",
          "values": []
        },
        {
          "name": "autocomplete",
          "description": "The autocomplete behavior of the combobox. Each value is also the `aria-autocomplete` the input\nannounces.\n- `list` (default): typing filters the listbox to options that match the entered characters;\n  the typed string becomes the value unless the user selects an option.\n- `none`: the combobox is editable, but the listbox always shows all options regardless of\n  the characters typed.",
          "values": [{ "name": "none" }, { "name": "list" }]
        },
        {
          "name": "inputValue",
          "description": "The current text value in the input field.",
          "values": []
        },
        {
          "name": "server",
          "description": "Puts the combobox in server mode without a `dataSource`: it filters nothing itself and asks for options\nthrough `ed-combobox-options-request`, answered by swapping the `<ed-option>` children and setting `loading`\nto false. A `dataSource` switches server mode on as well.",
          "values": []
        },
        {
          "name": "loading",
          "description": "Whether options are being requested. Set as soon as a request is scheduled, the typing pause included; a\n`dataSource` clears it when its answer is in. With `server` alone, set it back to false once the options are\nswapped.",
          "values": []
        },
        {
          "name": "filter-debounce",
          "description": "How long the typing rests before a server is asked for matching options, in milliseconds.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/combobox"
        }
      ]
    },
    {
      "name": "ed-copy-button",
      "description": "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.\n---\n\n\n### **Events:**\n - **ed-copy** - Emitted when the data has been copied.\n- **ed-error** - Emitted when the data could not be copied.\n\n### **Slots:**\n - _default_ - The trigger element. By default, a copy icon button is rendered so this is optional. If desired, you can slot in a custom element such as `<ed-button>` or `<button>`.\n- **copy-icon** - The icon to show in the default copy state. Works best with `<ed-icon>`.\n- **success-icon** - The icon to show when the content is copied. Works best with `<ed-icon>`.\n- **error-icon** - The icon to show when a copy error occurs. Works best with `<ed-icon>`.\n\n### **CSS Parts:**\n - **button** - The internal `<button>` element.\n- **copy-icon** - The container that holds the copy icon.\n- **success-icon** - The container that holds the success icon.\n- **error-icon** - The container that holds the error icon.\n- **feedback** - The internal `<ed-tooltip>` of the default trigger. With a slotted trigger the tooltip is a light-DOM child, which `::part()` does not reach — select it as `ed-copy-button > ed-tooltip[data-copy-button-tooltip]`.",
      "attributes": [
        {
          "name": "value",
          "description": "The text value to copy.",
          "values": []
        },
        {
          "name": "from",
          "description": "An id that references an element in the same document from which data will be copied. If both this and `value` are\npresent, this value will take precedence. By default, the target element's `textContent` will be copied. To copy an\nattribute, append the attribute name wrapped in square brackets, e.g. `from=\"el[value]\"`. To copy a property,\nappend a dot and the property name, e.g. `from=\"el.value\"`.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables the copy button.",
          "values": []
        },
        {
          "name": "copy-label",
          "description": "A custom label to use as the accessible name and tooltip text in the default copy state.",
          "values": []
        },
        {
          "name": "success-label",
          "description": "A custom label to show in the tooltip after copying.",
          "values": []
        },
        {
          "name": "error-label",
          "description": "A custom label to show in the tooltip when a copy error occurs.",
          "values": []
        },
        {
          "name": "feedback-duration",
          "description": "The length of time to show feedback before restoring the default trigger.",
          "values": []
        },
        {
          "name": "tooltip-placement",
          "description": "The preferred placement of the tooltip.",
          "values": [
            { "name": "left" },
            { "name": "right" },
            { "name": "top" },
            { "name": "bottom" }
          ]
        },
        {
          "name": "tooltip",
          "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.",
          "values": [{ "name": "copy" }, { "name": "none" }, { "name": "full" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/copy-button"
        }
      ]
    },
    {
      "name": "ed-date-picker",
      "description": "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.\n---\n\n\n### **Events:**\n - **input** - Emitted as the user types in any segment.\n- **change** - Emitted when the committed value transitions to a new one.\n- **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n- **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- **ed-clear** - Emitted when the value is cleared through the clear button or Escape.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n- **ed-show** - Emitted when the panel opens. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the panel opens and its animation has finished.\n- **ed-hide** - Emitted when the panel closes. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the panel closes and its animation has finished.\n\n### **Methods:**\n \n- **handleTypeChange()** - A type change drops a value the new type cannot read. The segments are rebuilt from what\nsurvives rather than reinterpreted — day 31 is not a month.\n- **handleRangeApplicabilityChange()** - A `range`, `start` or `end` set from outside moves what the two fields show and what the form\nreceives, so both are re-read. In `willUpdate` rather than `updated` for the same reason the\nvalue sync is: writing the segment stores after the render only schedules a second cycle.\n- **handleTimeShapeChange()** - A `step` change moves whether the field shows seconds at all, so the value is re-read through\nthe new shape — otherwise a seconds segment would appear holding nothing while the value still\ncarried a second, or vanish while the value kept one the field no longer shows.\n- **focus(options: _FocusOptions_)** - 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.\n- **blur()** - Removes focus from the picker.\n- **show(): _Promise<void>_** - 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.\n- **hide(): _Promise<void>_** - Closes the calendar. Resolves once it has finished animating.\n\n- **handleFormatChange()** - Report a format the field could not honor — but only where one was meant to apply.\n\nSilence on `time` and the period types is the point: a wrapper that binds `format` on every\npicker it renders would otherwise report a mistake on five of them. Where a format *does*\napply, saying nothing would leave a consumer watching the locale's order and reading their own\nattribute back off the element.\n\nWithout `waitUntilFirstUpdate`, unlike the `range` warning above: a format is usually wrong from\nthe markup onward, and that is the case worth catching.\n\nOnce per offending pair, not once per watcher. `@watch` runs its handler for **each** changed\nproperty it names, and `format` and `type` both change on the first update of\n`<ed-date-picker type=\"month\" format=\"…\">` — so a warning with no guard on it arrives twice for\none mistake.\n- **setValue(args: _Parameters<EdFormAssociatedElement['setValue']>_)** - 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.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - **label** - The picker's label. Alternatively, use the `label` attribute.\n- **hint** - Text that describes how to use the picker. Alternatively, use the `hint` attribute.\n- **start** - An element placed before the segments, inside the field.\n- **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- **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- **trigger-icon** - The glyph on the button that opens the panel. Defaults to a calendar icon, or a clock for `type=\"time\"`.\n- **clear-icon** - The glyph on the clear button. Defaults to an ✕ icon.\n\n### **CSS Properties:**\n - **--ed-date-picker-width** - The width of the field. Defaults to `100%`. _(default: undefined)_\n- **--ed-date-picker-column-height** - How tall the time columns are before they scroll. _(default: undefined)_\n\n### **CSS Parts:**\n - **form-control** - The form control's outer wrapper.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The wrapper around the field.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.\n- **base** - The field itself, holding the segments and both buttons. A range renders two.\n- **base-start** - Added to the first field of a range.\n- **base-end** - Added to the second field of a range.\n- **start** - The wrapper around the `start` slot.\n- **range** - The wrapper holding both fields of a range.\n- **range-separator** - The dash between them.\n- **segments** - The row of segments and separators. A range renders two.\n- **segment** - Any editable segment.\n- **segment-day** - Added to the day segment.\n- **segment-month** - Added to the month segment.\n- **segment-year** - Added to the year segment.\n- **segment-week** - Added to the week segment.\n- **segment-quarter** - Added to the quarter segment.\n- **segment-half-year** - Added to the half-year segment.\n- **segment-hour** - Added to the hour segment.\n- **segment-minute** - Added to the minute segment.\n- **segment-second** - Added to the second segment.\n- **segment-day-period** - Added to the AM/PM segment.\n- **separator** - Inert text between two segments.\n- **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- **clear-button** - The button that empties the field.\n- **trigger** - The button that opens the calendar.\n- **panel** - The floating surface holding the calendar. Carries the frame, background and shadow.\n- **surfaces** - The row inside the panel holding the calendar, the time columns, or both.\n- **footer** - The consumer's own note row under the panel. Always in the DOM, and hidden while the `footer` slot is empty.\n- **footer-controls** - The consumer's own control row under it. Always in the DOM, and hidden while the `footer-controls` slot is empty.\n- **panel-footer** - The OK/Cancel row below them. Rendered for `type=\"time\"` and `type=\"datetime\"`, where one pick cannot finish the value.\n- **footer-ok** - The button that accepts the entry and closes the panel. Disabled while the value is incomplete.\n- **footer-cancel** - The button that puts back the value the field held when the panel opened.\n- **calendar** - The `<ed-calendar>` inside the panel.\n- **calendar__base** - The calendar's exported `base` part. Prefixed because the field already owns `base`.\n- **calendar__panel** - The calendar's exported `panel` part, one wrapper per month shown. Prefixed because the floating surface already owns `panel`.\n- **calendar__footer** - The calendar's exported `footer` part. Prefixed because the note row already owns `footer`.\n- **time-columns** - The row of listboxes a time or datetime shows in the panel.\n- **time-column** - One of those listboxes.\n- **time-column-hour** - Added to the hour column.\n- **time-column-minute** - Added to the minute column.\n- **time-column-second** - Added to the second column.\n- **time-column-day-period** - Added to the AM/PM column.\n- **time-option** - One value in a column.\n- **time-option-selected** - The chosen value in a column.",
      "attributes": [
        {
          "name": "value",
          "description": "The default value used for form reset.",
          "values": []
        },
        {
          "name": "type",
          "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 `''`.",
          "values": [
            { "name": "datetime" },
            { "name": "year" },
            { "name": "month" },
            { "name": "quarter" },
            { "name": "week" },
            { "name": "date" },
            { "name": "halfyear" },
            { "name": "time" }
          ]
        },
        {
          "name": "required",
          "description": "Makes the picker required for form submission.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Allows the calendar to open but blocks typing and stepping.",
          "values": []
        },
        {
          "name": "with-clear",
          "description": "Adds a button that empties the field, and makes Escape empty it.",
          "values": []
        },
        {
          "name": "density",
          "description": "Controls the component's spacing density without affecting font-size.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "pill",
          "description": "Draws a pill-style field with rounded edges.",
          "values": []
        },
        {
          "name": "label",
          "description": "The picker's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "min",
          "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.",
          "values": []
        },
        {
          "name": "max",
          "description": "Latest selectable value, in the same form as value.",
          "values": []
        },
        {
          "name": "start-min",
          "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.",
          "values": []
        },
        {
          "name": "start-max",
          "description": "The latest value the first half accepts. See startMin.",
          "values": []
        },
        {
          "name": "end-min",
          "description": "The earliest value the second half accepts. See startMin.",
          "values": []
        },
        {
          "name": "end-max",
          "description": "The latest value the second half accepts. See startMin.",
          "values": []
        },
        {
          "name": "start-required",
          "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.",
          "values": []
        },
        {
          "name": "end-required",
          "description": "Ask for the second half of a range on its own. See startRequired.",
          "values": []
        },
        {
          "name": "start-disabled",
          "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.",
          "values": []
        },
        {
          "name": "end-disabled",
          "description": "Switch the second half of a range off. See startDisabled.",
          "values": []
        },
        {
          "name": "start-readonly",
          "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.",
          "values": []
        },
        {
          "name": "end-readonly",
          "description": "Fix the second half of a range. See startReadonly.",
          "values": []
        },
        {
          "name": "label-start",
          "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.",
          "values": []
        },
        {
          "name": "label-end",
          "description": "What the second half is called. See labelStart.",
          "values": []
        },
        {
          "name": "step",
          "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`.",
          "values": [{ "name": "any" }]
        },
        {
          "name": "hour-format",
          "description": "How the hour is written. `auto` asks the locale, which is what a native field does.",
          "values": [{ "name": "auto" }, { "name": "12" }, { "name": "24" }]
        },
        {
          "name": "range",
          "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.",
          "values": []
        },
        {
          "name": "start",
          "description": "The first end of a range, in the form type writes. Only read while range is set.",
          "values": []
        },
        {
          "name": "end",
          "description": "The second end. May stand empty, which is an open-ended period rather than an unfinished one.",
          "values": []
        },
        {
          "name": "open",
          "description": "The calendar's open state. Reflected, so `[open]` styles the field while it is showing.",
          "values": []
        },
        {
          "name": "placement",
          "description": "Where the calendar is placed relative to the field.",
          "values": [{ "name": "top" }, { "name": "bottom" }]
        },
        {
          "name": "locale",
          "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.",
          "values": []
        },
        {
          "name": "format",
          "description": "The order the field draws its segments in, and what sits between them — `\"DD.MM.YYYY\"`,\n`\"YYYY-MM-DD\"`, `\"M/D/YYYY\"`. Empty asks the locale, which is the default.\n\nThe vocabulary is Moment's, in the cut dayjs ships: `DD`/`D` for the day, `MM`/`M` for the month\nas digits, `MMMM`/`MMM` for its name, `YYYY`/`YY` for the year, and `[…]` around text that would\notherwise read as tokens. It is **not** Unicode LDML, whose lowercase spellings are refused\nrather than misread.\n\n`YY` draws two digits and changes nothing else: the value keeps all four, and a typed pair reads\nthrough Moment's pivot — `00`–`68` forward, `69`–`99` back.\n\nA named month is as wide as its word, so what sits beside it shifts as the month changes. Its\nplaceholder stays `mm`: the placeholder names the field, and predicting the word's width is not\nits job.\n\n`type` decides *which* segments there are; this decides only how they are drawn. A format naming\nanything else is ignored with a warning and the locale is used — a consumer who wants a month\nand a year asks for `type=\"month\"`. On `type=\"quarter\"`, `\"halfyear\"`, `\"week\"` and `\"time\"`\nthere is nothing to reorder, and a format is ignored in silence so that a wrapper may pass one\nto every picker it renders.\n\nThe value never moves: `type` alone decides the wire format a consumer reads and submits.",
          "values": []
        },
        {
          "name": "first-day-of-week",
          "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.",
          "values": [
            { "name": "1" },
            { "name": "2" },
            { "name": "3" },
            { "name": "4" },
            { "name": "5" },
            { "name": "6" },
            { "name": "7" },
            { "name": "auto" }
          ]
        },
        {
          "name": "show-week-numbers",
          "description": "Shows the ISO week number beside each row of the calendar.",
          "values": []
        },
        {
          "name": "default-month",
          "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.",
          "values": []
        },
        {
          "name": "panels",
          "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.",
          "values": []
        },
        {
          "name": "confirm",
          "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.",
          "values": [
            { "name": "auto" },
            { "name": "always" },
            { "name": "never" }
          ]
        },
        {
          "name": "picker-only",
          "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.",
          "values": []
        },
        {
          "name": "input-only",
          "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.",
          "values": []
        },
        {
          "name": "autofocus",
          "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.",
          "values": []
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the input, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/date-picker"
        }
      ]
    },
    {
      "name": "ed-radio",
      "description": "One option of an ed-radio-group, with a label and optional description, used to select a single choice among\nseveral.\n---\n\n\n### **Events:**\n - **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n\n### **Methods:**\n - **setCustomStates()** - 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)`.\n\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - _default_ - The radio's label. With `appearance=\"card\"` it is the card's title, and it truncates rather than wraps.\n- **start** - An element, such as `<ed-icon>`, placed before the label. Only rendered when `appearance` is `button`.\n- **end** - An element, such as `<ed-icon>` or `<ed-badge>`, placed after the label. Only shown when `appearance` is `button` or `card`; with `card` it sits at the far end of the title row and holds the chips and the icon. Content without a role of its own joins the radio's accessible name — `<ed-badge>` carries `role=\"status\"` and is announced separately, a bare `<span>` is not. An `<ed-badge>` given an `aria-label` joins the name with it.\n- **description** - Explanatory text below the title, indented to line up with it. Only shown when `appearance` is `card`. It becomes the radio's accessible description: the container is hidden from the accessibility tree and referenced with `aria-describedby`, so keep it to text. An interactive element placed here stays reachable by keyboard while being invisible to a screen reader — the combination axe reports as `aria-hidden-focus`.\n\n### **CSS Properties:**\n - **--ed-radio-checked-icon-color** - The color of the checked icon. _(default: undefined)_\n- **--ed-radio-checked-icon-scale** - The size of the checked icon relative to the radio. _(default: undefined)_\n\n### **CSS Parts:**\n - **control** - The circular container that wraps the radio's checked state.\n- **checked-icon** - The checked icon.\n- **start** - The container that wraps the `start` slot.\n- **label** - The container that wraps the radio's label.\n- **end** - The container that wraps the `end` slot.\n- **description** - The container that wraps the `description` slot. Always present; hidden unless `appearance` is `card` and the slot has content.",
      "attributes": [
        {
          "name": "value",
          "description": "The radio's value. When selected, the radio group will receive this value.",
          "values": []
        },
        {
          "name": "appearance",
          "description": "The radio's visual appearance. Owned by the enclosing `ed-radio-group`, which writes it onto\nevery radio it holds — a value set on a single radio is overwritten on the group's next sync.",
          "values": [
            { "name": "default" },
            { "name": "button" },
            { "name": "card" }
          ]
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the input, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/radio"
        }
      ]
    },
    {
      "name": "ed-dropdown-item",
      "description": "Represents an individual item within a dropdown menu, supporting standard items, checkboxes, radios, and submenus.\n---\n\n\n### **Events:**\n - **blur** - Emitted when the dropdown item loses focus.\n- **focus** - Emitted when the dropdown item gains focus.\n\n### **Slots:**\n - _default_ - The dropdown item's label.\n- **icon** - An optional icon to display before the label.\n- **details** - Additional content or details to display after the label.\n- **submenu** - Submenu items, typically `<ed-dropdown-item>` elements, to create a nested menu. Fill it in the markup rather than appending to it later: the submenu and its indicator arrow are rendered only for an item that has one, so an item that starts without a submenu does not pick one up afterwards. Rendering them for every item instead would put an arrow on each one and an empty `role=\"menu\"` in the accessibility tree.\n\n### **CSS Parts:**\n - **checkbox** - The checkbox indicator (an `<ed-checkbox>` element) when the item is a checkbox.\n- **radio** - The radio indicator (an `<ed-radio>` element) when the item is a radio.\n- **icon** - The container for the icon slot.\n- **label** - The container for the label slot.\n- **details** - The container for the details slot.\n- **submenu-icon** - The submenu indicator icon (a `<ed-icon>` element).\n- **submenu-icon__svg** - The submenu indicator's exported `svg` part, the drawn arrow itself.\n- **submenu** - The submenu container.\n- **link-icon** - The forward icon (a `<ed-icon>` element) a link item shows after its details.",
      "attributes": [
        {
          "name": "value",
          "description": "An optional value for the menu item. This is useful for determining which item was selected when listening to the\ndropdown's `ed-dropdown-select` event.",
          "values": []
        },
        {
          "name": "type",
          "description": "Set to `checkbox` to make the item a checkbox, or to `radio` to make it one of a set of which one is\nchosen: the radios between two dividers are a set, and choosing one unchecks the others.",
          "values": [
            { "name": "checkbox" },
            { "name": "radio" },
            { "name": "normal" }
          ]
        },
        {
          "name": "checked",
          "description": "Set to true to check the dropdown item. Only valid when `type` is `checkbox` or `radio`.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables the dropdown item.",
          "values": []
        },
        {
          "name": "submenuOpen",
          "description": "Whether the submenu is currently open.",
          "values": []
        },
        {
          "name": "href",
          "description": "When set, choosing the item navigates to this URL. The item stays a menu item for assistive technology, so its\nlabel should say where it leads. Ignored when `type` is not `normal`, the item has a submenu, or the URL's\nscheme is not one of http, https, mailto and tel.",
          "values": []
        },
        {
          "name": "target",
          "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.",
          "values": []
        },
        {
          "name": "rel",
          "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute.",
          "values": []
        },
        {
          "name": "download",
          "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dropdown-item"
        }
      ]
    },
    {
      "name": "ed-dropdown",
      "description": "Dropdowns display a list of options that can be triggered by a button or other element. They support\nkeyboard navigation, submenus, and various customization options.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the dropdown is about to show. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the dropdown has been shown.\n- **ed-hide** - Emitted when the dropdown is about to hide. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the dropdown has been hidden.\n- **ed-dropdown-select** - Emitted when an item in the dropdown is selected. Cancelable; calling `preventDefault()` leaves the selection unchanged.\n\n### **Slots:**\n - _default_ - The dropdown's items, typically `<ed-dropdown-item>` elements.\n- **trigger** - The element that triggers the dropdown, such as a `<ed-button>` or `<button>`.\n\n### **CSS Properties:**\n - **--ed-show-duration** - The duration of the show animation. _(default: undefined)_\n- **--ed-hide-duration** - The duration of the hide animation. _(default: undefined)_\n\n### **CSS Parts:**\n - **panel** - The floating surface holding the items. Carries the frame, background and shadow.",
      "attributes": [
        {
          "name": "open",
          "description": "Opens or closes the dropdown.",
          "values": []
        },
        {
          "name": "placement",
          "description": "The placement of the dropdown menu in reference to the trigger. The menu will shift to a more optimal location if\nthe preferred placement doesn't have enough room.",
          "values": [
            { "name": "left" },
            { "name": "right" },
            { "name": "top-start" },
            { "name": "top-end" },
            { "name": "bottom-start" },
            { "name": "bottom-end" },
            { "name": "top" },
            { "name": "bottom" },
            { "name": "right-start" },
            { "name": "right-end" },
            { "name": "left-start" },
            { "name": "left-end" }
          ]
        },
        {
          "name": "distance",
          "description": "The distance of the dropdown menu from its trigger.",
          "values": []
        },
        {
          "name": "skidding",
          "description": "The offset of the dropdown menu along its trigger.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dropdown"
        }
      ]
    },
    {
      "name": "ed-empty-state",
      "description": "Empty states communicate that there is no content to display, and what the user can do next.\n---\n\n\n### **Slots:**\n - _default_ - Empty state text.\n- **icon** - An element, such as `<ed-icon>`, placed before the Text. Alternatively, you can use the `icon` attribute.\n- **label** - The EmptyState's label.\n- **button** - Optional Button.\n\n### **CSS Properties:**\n - **--ed-empty-state-max-width** - The width the empty state will not grow beyond: the whole element at `size=\"small\"`, `\"medium\"` and `\"large\"`, the text column at `size=\"fullscreen\"`. _(default: 32rem)_\n- **--ed-empty-state-min-height** - The height the element reserves at `size=\"fullscreen\"`. _(default: 22rem)_\n- **--ed-empty-state-icon-min-width** - The width the `size=\"fullscreen\"` icon will not shrink below as it scales with the viewport. _(default: 10rem)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **icon** - 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.\n- **label** - The container that wraps the `label` slot.\n- **description** - Description of empty state.\n- **button** - The `button` slot itself. Like `icon` it is a slot, so inherited properties reach the slotted button while `background`, `padding` and `border` do not.",
      "attributes": [
        {
          "name": "size",
          "description": "Defines the size of the empty state. You have to manually set the correct header (`<h1/>`, `<h2/>`, `<h3/>`, `<p/>`) and button styling.",
          "values": [
            { "name": "fullscreen" },
            { "name": "small" },
            { "name": "medium" },
            { "name": "large" }
          ]
        },
        {
          "name": "alignment",
          "description": "Defines the alignment of the empty state.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "icon",
          "description": "Defines the icon which is used in the empty state. If you need a customized icon, use the `icon` slot instead.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/empty-state"
        }
      ]
    },
    {
      "name": "ed-input",
      "description": "Lets the user type a single short value on one line — name, email, amount, search term — in a form field\nwith label and validation.\n---\n\n\n### **Events:**\n - **change** - Emitted when an alteration to the control's value is committed by the user.\n- **input** - Emitted when the control receives input.\n- **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n- **ed-clear** - Emitted when the control's value is cleared.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n \n\n- **focus(options: _FocusOptions_)** - Sets focus on the input.\n- **blur()** - Removes focus from the input.\n- **select()** - Selects all the text in the input.\n- **setSelectionRange(selectionStart: _number_, selectionEnd: _number_, selectionDirection: _'forward' | 'backward' | 'none'_)** - Sets the start and end positions of the text selection (0-based).\n- **setRangeText(replacement: _string_, start: _number_, end: _number_, selectMode: _'select' | 'start' | 'end' | 'preserve'_)** - Replaces a range of text with a new string.\n- **showPicker()** - Displays the browser picker for an input element (only works if the browser supports it for the input type).\n- **stepUp()** - Increments the value of a numeric input type by the value of the step attribute.\n- **stepDown()** - Decrements the value of a numeric input type by the value of the step attribute.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - **label** - The input's label. Alternatively, you can use the `label` attribute.\n- **start** - An element, such as `<ed-icon>`, placed at the start of the input control.\n- **end** - An element, such as `<ed-icon>`, placed at the end of the input control.\n- **clear-icon** - An icon to use in lieu of the default clear icon.\n- **show-password-icon** - An icon to use in lieu of the default show password icon.\n- **hide-password-icon** - An icon to use in lieu of the default hide password icon.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n- **control** - Not for consumers. Holds the native `<input>` the element renders into its own light DOM, where browsers' password managers and form autofill can find it. The element creates it; style it through the `base` part, whose typography it inherits.\n\n### **CSS Properties:**\n - **--ed-input-text-align** - 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. _(default: undefined)_\n\n### **CSS Parts:**\n - **label** - The label\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.\n- **base** - The wrapper being rendered as an input\n- **start** - The container that wraps the `start` slot.\n- **clear-button** - The clear button.\n- **password-toggle-button** - The password toggle button.\n- **end** - The container that wraps the `end` slot.",
      "attributes": [
        { "name": "title", "values": [] },
        {
          "name": "type",
          "description": "The type of input. Works the same as a native `<input>` element, but only a subset of types are supported. Defaults\nto `text`.",
          "values": [
            { "name": "number" },
            { "name": "search" },
            { "name": "text" },
            { "name": "date" },
            { "name": "time" },
            { "name": "datetime-local" },
            { "name": "email" },
            { "name": "password" },
            { "name": "tel" },
            { "name": "url" }
          ]
        },
        {
          "name": "value",
          "description": "The default value of the form control. Primarily used for resetting the form control.",
          "values": []
        },
        {
          "name": "density",
          "description": "Controls the component's spacing density without affecting font-size.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "pill",
          "description": "Draws a pill-style input with rounded edges.",
          "values": []
        },
        {
          "name": "label",
          "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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.",
          "values": []
        },
        {
          "name": "with-clear",
          "description": "Adds a clear button when the input is not empty, and makes Escape empty the field.",
          "values": []
        },
        {
          "name": "placeholder",
          "description": "Placeholder text to show as a hint when the input is empty.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Makes the input readonly.",
          "values": []
        },
        {
          "name": "password-toggle",
          "description": "Adds a button to toggle the password's visibility. Only applies to password types.",
          "values": []
        },
        {
          "name": "password-visible",
          "description": "Determines whether or not the password is currently visible. Only applies to password input types.",
          "values": []
        },
        {
          "name": "without-spin-buttons",
          "description": "Hides the browser's built-in increment/decrement spin buttons for number inputs.",
          "values": []
        },
        {
          "name": "required",
          "description": "Makes the input a required field.",
          "values": []
        },
        {
          "name": "pattern",
          "description": "A regular expression pattern to validate input against.",
          "values": []
        },
        {
          "name": "minlength",
          "description": "The minimum length of input that will be considered valid.",
          "values": []
        },
        {
          "name": "maxlength",
          "description": "The maximum length of input that will be considered valid.",
          "values": []
        },
        {
          "name": "min",
          "description": "The input's minimum value. Only applies to date and number input types.",
          "values": []
        },
        {
          "name": "max",
          "description": "The input's maximum value. Only applies to date and number input types.",
          "values": []
        },
        {
          "name": "step",
          "description": "Specifies the granularity that the value must adhere to, or the special value `any` which means no stepping is\nimplied, allowing any numeric value. Only applies to date and number input types.",
          "values": [{ "name": "any" }]
        },
        {
          "name": "autocapitalize",
          "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
          "values": [
            { "name": "none" },
            { "name": "off" },
            { "name": "on" },
            { "name": "sentences" },
            { "name": "words" },
            { "name": "characters" }
          ]
        },
        {
          "name": "autocorrect",
          "description": "Indicates whether the browser's autocorrect feature is on or off. When set as an attribute, use `\"off\"` or `\"on\"`.\nWhen set as a property, use `true` or `false`.",
          "values": []
        },
        {
          "name": "autocomplete",
          "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
          "values": []
        },
        {
          "name": "autofocus",
          "description": "Indicates that the input should receive focus on page load.",
          "values": []
        },
        {
          "name": "enterkeyhint",
          "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
          "values": [
            { "name": "next" },
            { "name": "previous" },
            { "name": "search" },
            { "name": "send" },
            { "name": "done" },
            { "name": "enter" },
            { "name": "go" }
          ]
        },
        {
          "name": "spellcheck",
          "description": "Enables spell checking on the input.",
          "values": []
        },
        {
          "name": "inputmode",
          "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
          "values": [
            { "name": "search" },
            { "name": "text" },
            { "name": "numeric" },
            { "name": "none" },
            { "name": "email" },
            { "name": "tel" },
            { "name": "url" },
            { "name": "decimal" }
          ]
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the input, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/input"
        }
      ]
    },
    {
      "name": "ed-number-input",
      "description": "Number inputs allow users to enter and edit numeric values with stepper buttons.\n---\n\n\n### **Events:**\n - **input** - Emitted when the control receives input.\n- **change** - Emitted when an alteration to the control's value is committed by the user.\n- **blur** - Emitted when the control loses focus.\n- **beforeinput** - Emitted from a stepper button before the value changes. Call `event.preventDefault()` to cancel the change.\n- **focus** - Emitted when the control gains focus.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n \n- **focus(options: _FocusOptions_)** - Sets focus on the input.\n- **blur()** - Removes focus from the input.\n- **select()** - Selects all the text in the input.\n- **stepUp()** - Increments the value by the step amount.\n- **stepDown()** - Decrements the value by the step amount.\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - **label** - The input's label. Alternatively, you can use the `label` attribute.\n- **start** - An element, such as `<ed-icon>`, placed at the start of the input control.\n- **end** - An element, such as `<ed-icon>`, placed at the end of the input control (before steppers).\n- **increment-icon** - An icon to use in lieu of the default increment icon.\n- **decrement-icon** - An icon to use in lieu of the default decrement icon.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--ed-number-input-width** - Sets a fixed width for the input field _(default: undefined)_\n\n### **CSS Parts:**\n - **label** - The label element.\n- **form-control-label** - Alias for the label element.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint element.\n- **base** - The wrapper containing the input and steppers.\n- **input** - The internal `<input>` control.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.\n- **stepper** - Both stepper buttons (for shared styling).\n- **stepper-increment** - The increment (+) button on the end side.\n- **stepper-decrement** - The decrement (-) button on the start side.",
      "attributes": [
        { "name": "title", "values": [] },
        {
          "name": "value",
          "description": "The default value of the form control. Primarily used for resetting the form control.",
          "values": []
        },
        {
          "name": "density",
          "description": "Controls the component's spacing density without affecting font-size.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "pill",
          "description": "Draws a pill-style input with rounded edges.",
          "values": []
        },
        {
          "name": "label",
          "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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.",
          "values": []
        },
        {
          "name": "placeholder",
          "description": "Placeholder text to show as a hint when the input is empty.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Makes the input readonly.",
          "values": []
        },
        {
          "name": "required",
          "description": "Makes the input a required field.",
          "values": []
        },
        {
          "name": "min",
          "description": "The input's minimum value.",
          "values": []
        },
        {
          "name": "max",
          "description": "The input's maximum value.",
          "values": []
        },
        {
          "name": "step",
          "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.",
          "values": []
        },
        {
          "name": "without-steppers",
          "description": "Hides the increment/decrement stepper buttons.",
          "values": []
        },
        {
          "name": "autocomplete",
          "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
          "values": []
        },
        {
          "name": "autofocus",
          "description": "Indicates that the input should receive focus on page load.",
          "values": []
        },
        {
          "name": "enterkeyhint",
          "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
          "values": [
            { "name": "next" },
            { "name": "previous" },
            { "name": "search" },
            { "name": "send" },
            { "name": "done" },
            { "name": "enter" },
            { "name": "go" }
          ]
        },
        {
          "name": "inputmode",
          "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
          "values": [{ "name": "numeric" }, { "name": "decimal" }]
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the input, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/number-input"
        }
      ]
    },
    {
      "name": "ed-pagination",
      "description": "Pagination allows users to navigate through pages of content and optionally change the page size.\n---\n\n\n### **Events:**\n - **ed-page-change** - Emitted when the user moves to another page. A page brought back within the pages because `page`, `total-items` or `page-size` was set from outside is not reported.\n- **ed-page-size-change** - 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.\n\n### **Methods:**\n - **setPageSize(size: _number | string_)** - 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.\n- **setPage(page: _number | string_)** - Sets the current page\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **page-size-section** - The page-size selector section.\n- **page-size-section-select** - The internal ed-select.\n- **page-nav-section** - The page navigation section.\n- **total-pages** - The \"from X\" text. Absent while the total is unknown.",
      "attributes": [
        {
          "name": "total-items",
          "description": "The total number of items being paginated. Below zero while unknown: the pages then go on without a last one.",
          "values": []
        },
        {
          "name": "page",
          "description": "The current page (1-indexed). A page set past the last, or below the first, or that is no whole\nnumber, is brought back within the pages silently.",
          "values": []
        },
        {
          "name": "page-size",
          "description": "The number of items per page.",
          "values": []
        },
        {
          "name": "page-size-options",
          "description": "The available page size options for the dropdown.",
          "values": [{ "name": "number[]" }]
        },
        {
          "name": "hide-page-size",
          "description": "Hides the page-size selector section.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables the entire pagination component.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/pagination"
        }
      ]
    },
    {
      "name": "ed-popover",
      "description": "Popovers display contextual content and interactive elements in a floating panel.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted before the popover shows. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the popover has shown and all animations are complete.\n- **ed-hide** - Emitted before the popover hides. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the popover has hidden and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the popover.\n- **hide()** - Hides the popover.\n\n### **Slots:**\n - _default_ - The popover's content. Interactive elements such as buttons and links are supported.\n\n### **CSS Properties:**\n - **--ed-popover-arrow-size** - The size of the tiny arrow that points to the popover (set to zero to remove). _(default: 0.375rem)_\n- **--ed-popover-max-width** - The maximum width of the popover's body content. _(default: 25rem)_\n- **--ed-show-duration** - The speed of the show animation. _(default: var(--ed-transition-fast))_\n- **--ed-hide-duration** - The speed of the hide animation. _(default: var(--ed-transition-fast))_\n\n### **CSS Parts:**\n - **dialog** - The native dialog element that contains the popover content.\n- **panel** - The floating surface holding the content. Carries the frame, background and shadow.\n- **popup** - The internal `<ed-popup>` element that positions the popover.\n- **popup__popup** - The popup's exported `popup` part. Use this to target the popover's popup container.\n- **popup__arrow** - The popup's exported `arrow` part. Use this to target the popover's arrow.",
      "attributes": [
        {
          "name": "placement",
          "description": "The preferred placement of the popover. Note that the actual placement may vary as needed to keep the popover\ninside of the viewport.",
          "values": [
            { "name": "left" },
            { "name": "right" },
            { "name": "top-start" },
            { "name": "top-end" },
            { "name": "bottom-start" },
            { "name": "bottom-end" },
            { "name": "top" },
            { "name": "bottom" },
            { "name": "right-start" },
            { "name": "right-end" },
            { "name": "left-start" },
            { "name": "left-end" }
          ]
        },
        {
          "name": "open",
          "description": "Shows or hides the popover.",
          "values": []
        },
        {
          "name": "distance",
          "description": "The distance in pixels from which to offset the popover away from its target.",
          "values": []
        },
        {
          "name": "skidding",
          "description": "The distance in pixels from which to offset the popover along its target.",
          "values": []
        },
        {
          "name": "for",
          "description": "The ID of the popover's anchor element. This must be an interactive/focusable element such as a button.",
          "values": []
        },
        {
          "name": "without-arrow",
          "description": "Removes the arrow from the popover.",
          "values": []
        },
        {
          "name": "aria-label",
          "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).",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/popover"
        }
      ]
    },
    {
      "name": "ed-skeleton",
      "description": "Skeletons are used to provide a visual representation of where content will eventually be drawn.\n---\n\n\n### **CSS Properties:**\n - **--ed-skeleton-color** - The color of the skeleton. _(default: undefined)_\n- **--ed-skeleton-sheen-color** - The sheen color when the skeleton is in its loading state. _(default: undefined)_\n\n### **CSS Parts:**\n - **indicator** - The skeleton's indicator which is responsible for its color and animation.",
      "attributes": [
        {
          "name": "effect",
          "description": "Determines which effect the skeleton will use.",
          "values": [
            { "name": "none" },
            { "name": "pulse" },
            { "name": "sheen" }
          ]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/skeleton"
        }
      ]
    },
    {
      "name": "ed-toolbar",
      "description": "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.\n---\n\n\n### **Slots:**\n - _default_ - Actions: anything that acts on what the page is about — creating, exporting, deleting — or opens a surface to do so. Typically `<ed-button>`, `<ed-dropdown>` and `<ed-divider>` elements.\n- **search** - The search field, always first at the leading edge. Typically `<ed-input type=\"search\">`.\n- **view** - Controls that decide what is shown: context selectors, quick filters, the button that opens a filter panel, view switches. They never collapse into the overflow menu. Typically `<ed-select>`, `<ed-radio-group appearance=\"button\">` or an `<ed-button>` for the filter panel.\n- **meta** - Entry and selection counts, wrapped in an element — a bare text node cannot be assigned to a named slot, so use `<span slot=\"meta\">`.\n- **filters** - Active filters and the reset that clears them.\n\n### **CSS Properties:**\n - **--ed-toolbar-gap** - The gap between controls on the control row. _(default: var(--ed-space-2))_\n- **--ed-toolbar-row-gap** - The gap between the control row and the state row. _(default: var(--ed-space-2))_\n- **--ed-toolbar-state-min-height** - 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. _(default: the height of an ed-badge)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper, holding both rows.\n- **controls** - The control row: search, actions and view controls on one line.\n- **search** - The container around the `search` slot.\n- **actions** - The container around the default slot.\n- **overflow** - The dropdown holding the actions that no longer fit.\n- **overflow-trigger** - The button that opens the overflow menu.\n- **view** - The container around the `view` slot.\n- **state** - The state row, rendered only while `meta` or `filters` has content.\n- **state-divider** - The separator between the counter and the filters, rendered only while both carry content.\n- **meta** - The container around the `meta` slot.\n- **filters** - The container around the `filters` slot.",
      "attributes": [
        {
          "name": "label",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toolbar"
        }
      ]
    },
    {
      "name": "ed-data-grid",
      "description": "Data grids display tabular data with sorting, filtering, grouping and selection.\n---\n\n\n### **Events:**\n - **ed-data-grid-cell-click** - Emitted when a cell is activated, by a click or by Enter. The detail carries the `column` the cell stands in, by its id, the `row` record behind it, the cell's `value`, the `rowIndex` among the rows shown, and the `originalEvent` that tells the gestures apart. A cell that holds its own control does not report one: the control owns the gesture, by pointer and by key alike. Nor does a grouping row, which holds no record of its own. There is no row event beside it — a cell activation already names its row.\n- **ed-data-grid-cell-contextmenu** - Emitted when a cell is asked for its context menu. Same detail; `originalEvent` is the browser's `contextmenu` event, so a consumer opening their own menu calls `preventDefault()` on it.\n- **ed-data-grid-row-expand** - Emitted when the user opens a row, whether it is a parent with children or a grouping row. The detail carries the `row` record. Opening a row through `expandRow()`, `expandAllRows()` or the `expandedKeys` property is silent.\n- **ed-data-grid-row-collapse** - Emitted when the user closes a row. Same detail, same rule.\n- **ed-data-grid-column-resize** - Emitted while the user drags a column's width and once more when they let go, and once, finished, for each Alt+Arrow step, each fit from a double-click or the menu, and with `width: null` for each width the user chose that \"Reset columns\" drops. The detail carries the `columnId`, the `width` it has reached and `finished`, which tells the two apart — a listener saving the result checks it rather than debouncing. A press that does not move reports nothing, and a cancelled drag no finished width: the column goes back to where it was.\n- **ed-data-grid-row-select** - Emitted when the user changes which rows are selected: by a click on a row, with or without Ctrl/Cmd or Shift, through a row's box or the one in the header, or by key — Space on a row, Shift with an arrow for a range, Ctrl/Cmd+A for every row. The detail carries the whole selection — `selectedKeys` and the `selectedRows` behind them, at every depth — because one box can move many rows at once. Setting `selectedKeys` yourself does not fire it.\n- **ed-data-grid-sort-change** - Emitted when the user changes the order, by clicking a header or pressing Enter on one. The detail carries the whole `sort` list, first entry first. Setting `sort` yourself does not fire it.\n- **ed-data-grid-column-visibility-change** - Emitted when the user shows or hides a column, from its menu or from the view menu — including \"Reset columns\", once per column it changes. The detail carries the `columnId` and whether it is now `visible`. `toggleColumn()` and `resetColumns()` are silent.\n- **ed-data-grid-column-move** - Emitted when the user moves a column, by dragging its header or with Shift and an arrow on it: during a drag each time the place it would land at changes, with `finished` false, and once more when the drop settles. The detail carries the `columnId`, its `toIndex`, the whole `columnOrder` with hidden columns included, and `finished`. \"Reset columns\" reports once, with `columnId` and `toIndex` `null` and an empty `columnOrder`. Setting `columnOrder` is silent.\n- **ed-data-grid-data-request** - Emitted in server mode when the grid needs rows: first, on a new sort, filters, search, page or page size, and on `reload()`. The detail is the request — `sort`, `filters`, `search`, `page`, `pageSize` — with a `signal` that aborts once a newer request overtakes it. Without a `dataSource`, answer it by setting `data`, `total` and `loading`, and `error` where it failed.\n- **ed-data-grid-data-error** - Emitted when the `dataSource` fails a request that is still current. The detail carries the `error` and the `request`; the rows the grid had stay.\n- **ed-data-grid-page-change** - Emitted when the user moves to another page or changes the page size from the pager, and when a search or a filter the user changed takes the grid back to its first page. The detail carries the `page`, counted from zero, and the `pageSize`. Setting `page` or `pageSize` is silent.\n- **ed-data-grid-filter-change** - Emitted when the user changes a column's filter from its panel, clearing it included, clears it with its badge in the toolbar or all of them with \"Reset all filters\", or types in the search field. The detail carries every filter in force as `filters`, each `{ id, value }` with empty ones and columns that cannot be filtered left out, and the `searchTerm`. Setting `filters` or `searchTerm` is silent.\n- **ed-data-grid-view-change** - Emitted when the user changes how the grid looks from its view menu: its `appearance` or its `density`. The detail carries both as they are now. Setting either property yourself does not fire it.\n- **ed-data-grid-column-pin** - Emitted when the user holds a column against an edge or lets it go from its menu, and for each pin \"Reset columns\" changes. The detail carries the `columnId` and where it is now `pinned` — `'left'`, `'right'` or `false`. `pinColumn()` is silent, and so is choosing the edge the column is already at.\n\n### **Methods:**\n - **handleRowShapeChange()** - The two options the engine reads **once**, when it builds a row.\n\n`getRowId` was the first; `getSubRows` is the second, and the core row model is memoized on the\nidentity of `data` alone — so changing where the children are, or taking them away, would be\nignored until the data happened to change too.\n- **expandRow(id: _string | number_)** - Opens a row, by the key `rowKey` gives it.\n\nSilent, as the template has it: these report nothing, because the caller is the one who did it.\nThe key is kept even for a row that cannot open yet, so the row opens once it can — once its\nchildren or a detail arrive.\n- **collapseRow(id: _string | number_)** - Closes a row. Silent, for the same reason.\n- **expandAllRows()** - Opens every row that has something to open, at every level.\n- **collapseAllRows()** - Closes all of them.\n- **copySelectedRows(options: _EdDataGridCopyOptions_): _Promise<number>_** - Puts rows on the clipboard as text: the selected ones, or every row where none is selected, in\nthe order the grid shows them and with the children of closed rows included.\n\nThe template's method and options. Tab-separated by default, which is what a spreadsheet takes\nfrom a paste; `csv` quotes what needs quoting. A value a spreadsheet would run as a formula gets\na quote in front unless `escapeFormulas` is `false`. Each cell is its formatter's text where the\nformatter returns a string, and its value otherwise. Answers how many rows went.\n- **getDataAsCsv(options: _EdDataGridCsvOptions_): _string_** - The rows as CSV: every data row the sort, the filters and the search leave, across the pages and\nevery depth, in the columns shown and their order. The template's method; in server mode, only\nthe rows loaded. Lines end in CRLF, as RFC 4180 §2 has it.\n- **exportDataAsCsv(options: _EdDataGridExportOptions_): _void_** - Saves `getDataAsCsv()` as a file. With a byte order mark in front, which is how a spreadsheet\ntells UTF-8 from its own legacy encoding — without it, Excel shows every umlaut garbled.\n- **getVisibleRows(): _TData[]_** - The data rows shown right now, in order: after the sort, the filters, the open rows and the page.\n- **getProcessedRows(): _TData[]_** - Every data row the sort, the filters and the search leave, across the pages and every depth.\n- **getState(): _EdDataGridState_** - A snapshot of what the user made of the view — the columns' order, widths, visibility and pins,\nthe sort, the filters, the search, the selection, the open rows, the page and, where the view menu\noffers them, the appearance and the density — to keep and hand back to `setState()`.\n- **setState(state: _Partial<EdDataGridState>_): _void_** - Puts back what a snapshot holds, and leaves what it does not. Silent, as setting the properties\nis: the snapshot is the caller's own.\n- **resetState(): _void_** - Returns the view to the columns as declared — their order, widths, visibility and pins — with no\nsort, no filters, no search and no row open. The selection and the page stay, as the template has\nit. Silent.\n- **scrollToIndex(index: _number_, options: _{ align?: 'start' | 'center' | 'end' | 'auto'; behavior?: 'auto' | 'smooth' }_)** - Brings a row into view by its position in the data.\n\nPublic, and the one method block 2 owes: a consumer cannot scroll to a row that is not rendered,\nand with a window of a dozen rows out of fifty thousand, most rows are not. `align: 'start'` puts\nit just below the header rather than underneath it, which is what the scroll margin is for.\n- **pinColumn(columnId: _string_, side: _'left' | 'right' | false_): _void_** - Holds a column against an edge, or lets it go with `false`.\n\nThe column moves to that edge, after the columns already held there, and goes back to its place\nin the list when let go. The edges are named the way the column declares them, and read as\nlogical: `left` is the start edge and follows the writing direction.\n\nSilent, the way `expandRow()` is and for the same reason: the caller already knows, and an\nelement reporting its own configuration back would feed a listener that writes it. The gesture\nthat moves a column is what reports.\n\nA column the rows are grouped by is left where the grouping puts it: first, and held at the\nstart exactly when another column is.\n- **toggleColumn(columnId: _string_, visible: _boolean_): _void_** - Shows or hides a column by its id, or turns it the other way without a value.\n\nSilent, like `pinColumn()`: the caller already knows. The column keeps its width and its pin for\nwhen it comes back.\n- **resetColumns(): _void_** - Puts the columns back the way they were declared: the widths the user dragged, the columns they\nshowed or hid, and the edges they pinned them to all go. Sort, selection and the open rows stay.\nSilent, as the template's is.\n- **reload(): _void_** - Asks the server again for the rows shown, though nothing changed.\n- **getColumnFacets(columnId: _string_): _EdDataGridColumnFacets_** - What a column holds before its own filter applies: each value with how often it occurs, and the\nrange of its numbers — for building a filter of one's own. The template's method.\n- **autoSizeColumn(columnId: _string_): _void_** - Sets a column to the width of what is in it, which can be narrower than it was.\n\nThe body cells count by the text they render and the header by its label beside the controls\nit holds, which is how the template measures.\n- **autoSizeColumns(): _void_** - Fits every shown column the user may resize to its content, as `autoSizeColumn()` does one.\n- **sizeColumnsToFit(): _void_** - Shares the grid's width out among the shown columns by their `flex`, each held within its\n`minWidth` and `maxWidth`, while the control columns keep their room. Each width is reported,\nfinished, as a width chosen for the column. The template's method, and like it this neither hands\nwhat a limit cut off to the others nor skips a column that may not be resized.\n- **getColumnPin(columnId: _string_): _'left' | 'right' | false_** - The edge a column is held at — `'left'`, `'right'`, or `false` — whether by its declaration, the\nuser, or because the rows are grouped by it and something else is held at the start.\n\n### **Slots:**\n - **toolbar-actions** - Actions in the toolbar above the grid, after the search: anything that acts on the rows — creating, exporting, deleting — or opens a surface to do so. Typically `<ed-button>` and `<ed-dropdown>` elements; what no longer fits moves into the toolbar's overflow menu.\n- **toolbar-view** - Controls in the toolbar that decide what the grid shows — quick filters, the button that opens a filter panel — before the view menu; they never collapse into the overflow menu. Typically `<ed-select>`, `<ed-radio-group appearance=\"button\">` or an `<ed-button>` for the filter panel.\n- **loading** - What stands in for the rows while they load. Skeleton rows by default.\n- **empty** - What stands where there are no rows and nothing is looked for. An `ed-empty-state` by default.\n- **no-results** - What stands where the filters or the search leave no row. An `ed-empty-state` by default.\n\n### **CSS Properties:**\n - **--ed-data-grid-cell-padding-inline** - The inline padding of every cell. _(default: undefined)_\n- **--ed-data-grid-cell-padding-block** - The block padding of every cell. The density steps set it. _(default: undefined)_\n- **--ed-data-grid-row-height** - How tall a row of one line is. The density steps set it. _(default: undefined)_\n- **--ed-data-grid-border-color** - The outline, the rules between the rows, the header's rules and the lines at a group's end and a pinned band's edge. _(default: undefined)_\n- **--ed-data-grid-border-radius** - The corners of the outline. _(default: undefined)_\n- **--ed-data-grid-accent-color** - The boxes that select, the bar a selected row carries at its start edge, and a column edge under the pointer. _(default: undefined)_\n- **--ed-data-grid-header-background** - The header's background. _(default: undefined)_\n- **--ed-data-grid-header-text-color** - The header's text, the sort priority included. _(default: undefined)_\n- **--ed-data-grid-header-icon-color** - The header's icons: the sort arrow and the number beside it, the filter button and the menu button. _(default: undefined)_\n- **--ed-data-grid-stripe-background** - Every other row, with `striped`. _(default: undefined)_\n- **--ed-data-grid-row-hover-background** - The row under the pointer. _(default: undefined)_\n- **--ed-data-grid-focus-ring** - The ring around the cell that holds the focus. _(default: undefined)_\n- **--ed-data-grid-indent-size** - How far one level of a tree steps in. _(default: undefined)_\n- **--ed-data-grid-selected-background** - What a selected row is painted with. The library's own selected color by default, so a selected row reads as the same thing as a selected option. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The grid itself. It is the scroll container: give the host a height and the rows scroll here.\n- **header** - The rowgroup holding the column headers.\n- **header-row** - One row of column headers. It carries the role and no box of its own.\n- **header-cell** - One column header.\n- **sort-indicator** - The arrow on a header that can be sorted by. Present whether or not the column is sorted, so the header keeps its width.\n- **sort-priority** - The number saying where a column stands in the order. Rendered only while more than one column is sorted.\n- **toolbar** - The `ed-toolbar` above the grid, rendered once anything is in it: the search, the view menu, content in `toolbar-actions` or `toolbar-view`, a filterable column, or selection. Its lower row always counts the entries.\n- **toolbar-count** - How many entries there are, of how many where a filter or the search narrows them, and how many are selected.\n- **filter-badge** - One active filter in the toolbar, as its column and its value, with a button that clears it.\n- **filter-reset** - The button after the last filter badge that clears every filter and the search.\n- **search** - The search field at the start of the toolbar, rendered with `with-search`.\n- **drag-ghost** - The label naming a column that follows the pointer while the column is dragged. It sits in the top layer.\n- **view-menu** - The menu at the end of the toolbar that shows or hides the columns and switches the appearance and the density.\n- **column-menu** - The menu in a column header, on every column that has something to offer unless `hide-column-menu` is set: sorting, pinning, the filter, and hiding and fitting the column. Its entries are rendered only while it is open.\n- **column-menu-button** - The button that opens a column's menu. Out of sight until the header is pointed at, the keyboard is in it or the menu is open, though it keeps its room; always shown on a screen that cannot point.\n- **filter-button** - The button in a filterable column's header that opens its filter panel, rendered while a filter is in force on the column or its panel is open. A filter is started from the column's menu.\n- **filter-panel** - The popover holding a column's filter. It stands beside the grid, not in the header, and holds its controls only while open.\n- **filter-clear** - The button in a filter panel that clears the column's filter.\n- **filter-close** - The button at the top of a filter panel that closes it.\n- **body** - The rowgroup holding the data rows.\n- **row** - One data row.\n- **group-row** - A row standing for one value of a grouped column. It carries the `row` part as well.\n- **control-header-cell** - A control column's header. It heads no data; the one over the boxes carries the box that takes every row, the one over the toggles holds nothing.\n- **control-cell** - A cell holding what belongs to a row rather than to a column. These are the leading columns of the grid, one per control, and they are held at the edge whenever a column is pinned there.\n- **select-cell** - The control cell holding a row's box. Carries the `control-cell` part as well.\n- **expand-cell** - The control cell holding the control that opens a row. Carries the `control-cell` part as well.\n- **select** - The box that selects one row. On a grouping row it takes the rows that row holds, and reads its own state back off them.\n- **select-all** - The box in the header that takes every row. Rendered only where more than one row can be selected.\n- **expand** - The control that opens a row, inside its control cell and stepped in by the row's depth. Absent on a row with nothing to open.\n- **resize-handle** - The strip between two column headers that the width is dragged on; a double-click fits the column to its content. A named separator that takes no focus — the keyboard resizes from the header cell with Alt and the arrows.\n- **indent** - The space in front of a row's content that shows how deep it sits. On the first cell holding data, one step per level.\n- **no-results** - The message where the filters or the search leave no row. It stands below the grid's header, outside the grid.\n- **footer** - The row group holding the footer row, held against the bottom of the grid.\n- **footer-row** - The footer row, rendered where a shown column has a `footer` and there are rows.\n- **footer-cell** - One cell of the footer row, under a data column. Under a control column the cell carries the `control-cell` part, as it does in the body.\n- **row-detail** - The row beneath an open row that holds its detail, rendered with `rowDetail`.\n- **row-detail-cell** - The one cell of that row, across every column, holding what `rowDetail` returns.\n- **pagination** - The strip beneath the grid holding the pager, rendered with `paginate` while there are rows.\n- **pagination-info** - Which rows the page shows, of how many there are.\n- **loading-row** - The row standing for the rows while they load, with one cell across every column holding the `loading` slot.\n- **retry-row** - The row at the end of an endless grid's rows where its next slice failed, rendered with `pagination-mode=\"infinite\"`.\n- **retry-cell** - The one cell of that row, across every column, saying the rows could not be loaded.\n- **retry-button** - The button in that cell that asks for the slice again.\n- **skeleton-row** - A row of skeletons standing in for the rows while they load. Hidden from the accessibility tree; the grid is marked busy.\n- **empty** - What stands where there are no rows and nothing is looked for. It stands below the header, outside the grid.\n- **load-error** - What stands in the empty state's place where a data source failed and there are no rows: saying so, with a button to ask again.\n- **load-error-notice** - What stands above the grid where a later request failed and the rows it had stay: saying so, with a button to ask again.\n- **live-region** - Where the grid says what just happened, for a reader who cannot see it. Visually hidden and outside the grid, since a grid's children are row groups and rows.\n- **group-label** - The value a grouping row stands for, in the column it groups by.\n- **group-count** - How many rows that grouping row holds.\n- **cell** - One data cell.",
      "attributes": [
        {
          "name": "row-key",
          "description": "What identifies a row: a field name, a dot path, or a function of the row. The function is handed\nthe row's place among its siblings and, in a tree, the parent's record and the parent's key, for\nchildren whose own ids repeat under different parents.\n\nThe value is the row's identity everywhere — selection, expansion and a saved view all key on\nit — and it has to survive sorting, filtering and a replaced `data` array, so it belongs to the\nrecord rather than to its position. A row the key does not reach falls back to its position and\nis reported once.",
          "values": [{ "name": "{  }" }]
        },
        {
          "name": "label",
          "description": "The grid's accessible name.\n\nIt is a property rather than an `aria-labelledby` on the host because the `role=\"grid\"` node is\nin the shadow root, and an IDREF does not cross that boundary.",
          "values": []
        },
        {
          "name": "without-sort-removal",
          "description": "Whether a third activation of a header leaves the column sorted instead of clearing its order.\n\nThe cycle is ascending, descending, none. With this set it is ascending, descending, ascending,\nfor a grid whose rows are meaningless in their original order.",
          "values": []
        },
        {
          "name": "sort-desc-first",
          "description": "Whether the first activation of a header sorts descending. Individual columns may say otherwise.",
          "values": []
        },
        {
          "name": "max-multi-sort",
          "description": "How many columns may be sorted by at once. `0` is no limit, `1` allows a single column only.",
          "values": []
        },
        {
          "name": "child-rows",
          "description": "Where a row's children are: a field name, a dot path, or a function of the row.\n\nSetting it is what makes the grid a tree. Nothing else has to change — a row without children\nsimply has none, and the engine only asks.",
          "values": [{ "name": "{  }" }]
        },
        {
          "name": "group-by",
          "description": "Which columns the rows are grouped by, in the order they nest.\n\nEach value of the first column becomes a row of its own holding the ones that share it; a second\ncolumn groups inside that. As an attribute it takes the ids separated by spaces or commas, which\nis how the template spells a list that has to fit in markup.\n\nThe grouped columns move to the front, in this order, and a grouping row's label stands in the\ncolumn it groups by. Where anything is pinned at the start, they are held there too.\n\nOne hierarchy at a time: where `childRows` is set the rows already nest, and this is ignored —\nkept rather than cleared, so it applies again once they stop, and reported as ignored so the\ngrouping does not simply go missing. A name with nothing in it names no column and is dropped.",
          "values": [{ "name": "string[]" }]
        },
        {
          "name": "resizable",
          "description": "Whether the user can drag a column's width.\n\nA column may say otherwise for itself. What a drag produces is a width the grid remembers, so\na resized column stops sharing the leftover space and is laid out at what it was given.",
          "values": []
        },
        {
          "name": "reorderable",
          "description": "Whether the user can move columns, by dragging a header or with Shift and an arrow on it. A column\nmay say otherwise for itself with `movable`; a pinned column stands at its edge and is not moved.",
          "values": []
        },
        {
          "name": "pinnable",
          "description": "Whether the user can hold a column against an edge.\n\nA column may say otherwise for itself. Separate from the column's own `pinned`, which says\nwhere it **starts**: a grid that is not pinnable still lays out what its columns declared, and\none that is offers the edges in each column's menu. A pinned column's menu offers to let it go\neither way.",
          "values": []
        },
        {
          "name": "hide-column-menu",
          "description": "Takes the menu out of every column header.\n\nThe menu is where a user sorts, pins, filters, hides and fits a column by name. Without it a\ncolumn's filter is reached only once a filter is in force — a consumer sets it, and the button\nthat then appears in the header opens its panel — so the user can no longer start one.",
          "values": []
        },
        {
          "name": "with-view-menu",
          "description": "Whether the toolbar above the grid carries a view menu: the columns the user may hide, each with a\ncheck that shows or hides it, the appearance and the density to switch between, and an entry that\nputs the columns back as declared. What the user picks there overrides `appearance` and `density`\nas the consumer set them, reported by `ed-data-grid-view-change` and kept by `getState()`.\n`hide-appearance-option` and `hide-density-option` leave either choice out.",
          "values": []
        },
        {
          "name": "hide-appearance-option",
          "description": "Whether the view menu leaves out the appearance, so the user keeps the one the consumer set.\n`getState()` then leaves it out too.",
          "values": []
        },
        {
          "name": "hide-density-option",
          "description": "Whether the view menu leaves out the density, so the user keeps the one the consumer set.\n`getState()` then leaves it out too.",
          "values": []
        },
        {
          "name": "selectable",
          "description": "Whether rows can be selected. Off, the grid renders no box and reports nothing.",
          "values": []
        },
        {
          "name": "selection-mode",
          "description": "Whether one row can be selected at a time, or several.\n\nThe template spells both the switch and the mode in one property; this library's rule says a\ntoggle and its mode are two, so `selectable` turns it on and this says which kind. In `single`\nthere is nothing to select all of, so the header carries no box.",
          "values": [{ "name": "single" }, { "name": "multiple" }]
        },
        {
          "name": "sub-row-selection",
          "description": "Whether selecting a row selects the rows beneath it.\n\nOn, a parent takes its children with it and shows a part-selected box while only some of them\nare chosen. Off, every row answers for itself and a parent is just another row.",
          "values": []
        },
        {
          "name": "without-click-selection",
          "description": "Leaves a click on a row's data alone, so only the box and Space select — for a grid whose cell\nclicks open something of their own. MUI 5's `disableSelectionOnClick`.",
          "values": []
        },
        {
          "name": "without-toolbar",
          "description": "Leaves the toolbar out, for a consumer who builds one of their own: no search, no view menu, no\ncount and no filter badges, whatever else asks for them. The pager counts the entries again. What\nsuch a toolbar needs is public: `searchTerm`, `filters`, `toggleColumn()`, `resetColumns()`,\n`selectedKeys` and the events that report them.",
          "values": []
        },
        {
          "name": "server",
          "description": "Whether the rows come from a server: the grid sorts, filters and pages nothing itself, and asks\nfor rows through `ed-data-grid-data-request` — answered by setting `data`, `total` and `loading`.\nA `dataSource` switches it on as well. Without `paginate`, it asks for the first `pageSize` rows.",
          "values": []
        },
        {
          "name": "total",
          "description": "How many rows the server has in all, for the pager; below zero while unknown. Unknown, the pager\ngoes on past every full page, and an answer shorter than the page size asked for is the last.",
          "values": []
        },
        {
          "name": "loading",
          "description": "Whether rows are being loaded: skeleton rows stand in for them, and the grid is marked busy.",
          "values": []
        },
        {
          "name": "filter-debounce",
          "description": "How long the typing in the search or a filter rests before a server is asked, in milliseconds.",
          "values": []
        },
        {
          "name": "paginate",
          "description": "Whether the rows are shown a page at a time, with a pager beneath the grid.",
          "values": []
        },
        {
          "name": "appearance",
          "description": "How the grid is drawn: `classic`, its rows on the page with no outline, as a table stands, or\n`modern`, its rows on a card with rounded corners. The consumer's choice is where the grid starts; the\nuser may switch it in the view menu.",
          "values": [{ "name": "modern" }, { "name": "classic" }]
        },
        {
          "name": "striped",
          "description": "Whether every other row is set on a stripe, which makes a wide grid easier to follow across.",
          "values": []
        },
        {
          "name": "density",
          "description": "How tall the rows are and how much room their cells leave around what they hold; the header stands\na step taller. The consumer's choice is where the grid starts; the user may switch it in the view\nmenu.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "pagination-mode",
          "description": "How `paginate` moves through the rows: a pager beneath the grid, or endlessly — in server mode\nonly — each slice asked for as the rows are scrolled near their end and appended to them. `page`\nis then the last slice asked for. Without server mode, the pager stands. Answering the request\nevent by hand, hand in every row loaded so far with the new slice appended. The grid needs a\nheight: unbounded, every row is in view and the slices load one after another to the end.",
          "values": [{ "name": "controls" }, { "name": "infinite" }]
        },
        {
          "name": "page",
          "description": "The page shown, counted from zero — the engine's page index. Setting it is silent; the pager and\nthe search and filters the user changes write it and report. A page past the last is brought back\nto the last once there are rows.",
          "values": []
        },
        {
          "name": "page-size",
          "description": "How many rows a page holds.",
          "values": []
        },
        {
          "name": "filter-from-leaf-rows",
          "description": "Whether a row stays for a descendant that matches, though it does not match itself. Without it a\ntree is filtered from the top: a row that does not match takes its children with it.",
          "values": []
        },
        {
          "name": "max-leaf-row-filter-depth",
          "description": "How many levels down the filters and the search reach into a tree. The children of a row at this\ndepth stay with it as they are, filtered or not; with `filter-from-leaf-rows`, that row is no\nlonger kept for a descendant that matches, only for itself.",
          "values": []
        },
        {
          "name": "with-search",
          "description": "Whether a search field stands in the toolbar. The search runs on `searchTerm` either way.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/data-grid"
        }
      ]
    },
    {
      "name": "ed-details",
      "description": "Details show a brief summary and expand to show additional content.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted before the details opens. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the details opens and all animations are complete.\n- **ed-hide** - Emitted before the details closes. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the details closes and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the details.\n- **hide()** - Hides the details\n\n### **Slots:**\n - _default_ - The details' main content.\n- **summary** - The details' summary. Alternatively, you can use the `summary` attribute.\n- **expand-icon** - Optional expand icon to use instead of the default. Works best with `<ed-icon>`.\n- **collapse-icon** - Optional collapse icon to use instead of the default. Works best with `<ed-icon>`.\n\n### **CSS Properties:**\n - **--ed-details-spacing** - The amount of space around and between the details' content. Expects a single value. _(default: undefined)_\n- **--ed-show-duration** - The show duration to use when applying built-in animation classes. _(default: var(--ed-transition-normal))_\n- **--ed-hide-duration** - The hide duration to use when applying built-in animation classes. _(default: var(--ed-transition-normal))_\n\n### **CSS Parts:**\n - **base** - The inner `<details>` element used to render the component. Styles you apply to the component are automatically applied to this part, so you usually don't need to deal with it unless you need to set the `display` property.\n- **header** - The header that wraps both the summary and the expand/collapse icon.\n- **summary** - The `<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.\n- **icon** - The container that wraps the expand/collapse icons.\n- **content** - The details content.",
      "attributes": [
        {
          "name": "open",
          "description": "Indicates whether or not the details is open. You can toggle this attribute to show and hide the details, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the details' open state.",
          "values": []
        },
        {
          "name": "summary",
          "description": "The summary to show in the header. If you need to display HTML, use the `summary` slot instead.",
          "values": []
        },
        {
          "name": "name",
          "description": "Groups related details elements. When one opens, others with the same name will close.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables the details so it can't be toggled.",
          "values": []
        },
        {
          "name": "appearance",
          "description": "The element's visual appearance.",
          "values": [{ "name": "filled" }, { "name": "plain" }]
        },
        {
          "name": "icon-placement",
          "description": "The location of the expand/collapse icon.",
          "values": [{ "name": "start" }, { "name": "end" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/details"
        }
      ]
    },
    {
      "name": "ed-page-thumbnail",
      "description": "A selectable thumbnail of a document page — an A4 preview image with a caption.\n---\n\n\n### **Events:**\n - **click** - Emitted when the thumbnail is activated by pointer or keyboard (Enter/Space). Use it to drive selection.\n\n### **Slots:**\n - _default_ - The caption shown below the preview. Alternatively, use the `label` attribute.\n- **overlay** - Content layered over the preview, e.g. a page-number badge, a selection checkbox, or action buttons.\n\n### **CSS Properties:**\n - **--ed-page-thumbnail-width** - The width of the preview card. Height follows the A4 aspect ratio. _(default: 4.125rem)_\n\n### **CSS Parts:**\n - **card** - The A4 preview box that holds the image or the empty placeholder.\n- **image** - The preview `<img>` element.\n- **empty-icon** - The `page_crossed` icon shown when there is no preview.\n- **label** - The caption below the preview.",
      "attributes": [
        {
          "name": "src",
          "description": "The preview image URL. When absent (or it fails to load), the empty placeholder is shown.",
          "values": []
        },
        {
          "name": "label",
          "description": "The caption shown below the preview (e.g. a page number). Also used as the image's alt text and accessible name.",
          "values": []
        },
        {
          "name": "rotation",
          "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.",
          "values": [
            { "name": "0" },
            { "name": "90" },
            { "name": "180" },
            { "name": "270" }
          ]
        },
        {
          "name": "selected",
          "description": "Whether the thumbnail is selected. The parent owns the selection set; this only reflects the state.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables the thumbnail: it is not focusable and does not emit activation events.",
          "values": []
        },
        {
          "name": "tabIndex",
          "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`.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/page-thumbnail"
        }
      ]
    },
    {
      "name": "ed-slider",
      "description": "Lets the user choose a value, or a range with two thumbs, by dragging a handle along a bounded scale.\n---\n\n\n### **Events:**\n - **change** - Emitted when an alteration to the control's value is committed by the user.\n- **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n- **input** - Emitted when the control receives input.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n \n- **focus()** - Sets focus to the slider.\n- **blur()** - Removes focus from the slider.\n- **stepDown()** - Decreases the slider's value by `step`. This is a programmatic change, so `input` and `change` events will not be\nemitted when this is called.\n- **stepUp()** - Increases the slider's value by `step`. This is a programmatic change, so `input` and `change` events will not be\nemitted when this is called.\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - **label** - The slider label. Alternatively, you can use the `label` attribute.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute. instead.\n- **reference** - One or more reference labels to show visually below the slider.\n\n### **CSS Properties:**\n - **--ed-slider-track-size** - The height or width of the slider's track. _(default: 0.5em)_\n- **--ed-slider-marker-size** - The size of each individual marker. _(default: 0.1875em)_\n- **--ed-slider-thumb-size** - The size of the thumb. _(default: 1.24em)_\n\n### **CSS Parts:**\n - **label** - The element that contains the slider's label.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The element that contains the slider's description.\n- **slider** - The focusable element with `role=\"slider\"`. Contains the track and reference slot.\n- **track** - The slider's track.\n- **indicator** - The colored indicator that shows from the start of the slider to the current value.\n- **markers** - The container that holds all the markers when `with-markers` is used.\n- **marker** - The individual markers that are shown when `with-markers` is used.\n- **references** - The container that holds references that get slotted in.\n- **thumb** - The slider's thumb.\n- **thumb-min** - The min value thumb in a range slider.\n- **thumb-max** - The max value thumb in a range slider.\n- **tooltip** - The tooltip, a `<ed-tooltip>` element.\n- **tooltip__popup** - The tooltip's exported `popup` part, the element that positions it.\n- **tooltip__panel** - The tooltip's exported `panel` part, its visible surface.\n- **tooltip__arrow** - The tooltip's exported arrow.",
      "attributes": [
        {
          "name": "label",
          "description": "The slider's label. If you need to provide HTML in the label, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the slider. This will be submitted with the form as a name/value pair.",
          "values": []
        },
        {
          "name": "min-value",
          "description": "The minimum value of a range selection. Used only when range attribute is set.",
          "values": []
        },
        {
          "name": "max-value",
          "description": "The maximum value of a range selection. Used only when range attribute is set.",
          "values": []
        },
        {
          "name": "value",
          "description": "The default value used for form reset. The raw attribute text, as on a native input.",
          "values": []
        },
        {
          "name": "range",
          "description": "Converts the slider to a range slider with two thumbs.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Makes the slider a read-only field.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "The orientation of the slider.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "indicator-offset",
          "description": "The starting value from which to draw the slider's fill, which is based on its current value.",
          "values": []
        },
        {
          "name": "min",
          "description": "The minimum value allowed.",
          "values": []
        },
        {
          "name": "max",
          "description": "The maximum value allowed.",
          "values": []
        },
        {
          "name": "step",
          "description": "The granularity the value must adhere to when incrementing and decrementing.",
          "values": []
        },
        {
          "name": "autofocus",
          "description": "Tells the browser to focus the slider when the page loads or a dialog is shown.",
          "values": []
        },
        {
          "name": "tooltip-distance",
          "description": "The distance of the tooltip from the slider's thumb.",
          "values": []
        },
        {
          "name": "tooltip-placement",
          "description": "The placement of the tooltip in reference to the slider's thumb.",
          "values": [
            { "name": "left" },
            { "name": "right" },
            { "name": "top" },
            { "name": "bottom" }
          ]
        },
        {
          "name": "with-markers",
          "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.",
          "values": []
        },
        {
          "name": "with-tooltip",
          "description": "Draws a tooltip above the thumb when the control has focus or is dragged.",
          "values": []
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup\nincludes the label before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup\nincludes the hint before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/slider"
        }
      ]
    },
    {
      "name": "ed-document-viewer",
      "description": "A document viewer — a dark toolbar (pagination, view-mode, zoom), a thumbnail rail, and a page canvas. The consumer supplies rendered page images.\n---\n\n\n### **Events:**\n - **ed-page-change** - Emitted when the current page changes.\n- **ed-zoom-change** - Emitted when the zoom factor changes.\n- **ed-view-change** - Emitted when the view mode changes.\n- **ed-rotate** - 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`.\n\n### **Slots:**\n - **actions** - Extra buttons at the end of the toolbar (e.g. download, print).\n- **error** - Overrides the localized message shown when the current page cannot be loaded.\n\n### **CSS Properties:**\n - **--ed-document-viewer-rail-width** - The width of the thumbnail rail. _(default: 6rem)_\n\n### **CSS Parts:**\n - **toolbar** - The top toolbar.\n- **pagination** - The page navigation group.\n- **zoomer** - The zoom group: the two zoom buttons and the slider between them.\n- **button** - Each toolbar icon button.\n- **actions** - The container for the `actions` slot.\n- **rail** - The thumbnail rail (a listbox).\n- **thumbnail** - Each page thumbnail (an `ed-page-thumbnail`).\n- **canvas** - The page render area.\n- **page** - A rendered page `<img>` (or the per-page error placeholder).\n- **error** - The load-error container.",
      "attributes": [
        {
          "name": "page",
          "description": "The current page, 1-based.",
          "values": []
        },
        {
          "name": "view",
          "description": "How the canvas lays out pages.",
          "values": [{ "name": "single" }, { "name": "continuous" }]
        },
        {
          "name": "zoom",
          "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.",
          "values": []
        },
        {
          "name": "fit",
          "description": "The fit preset, or `null` while the user is in manual zoom.",
          "values": [{ "name": "width" }, { "name": "height" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/document-viewer"
        }
      ]
    },
    {
      "name": "ed-file-input",
      "description": "File inputs let users pick one or more files from their device to submit with a form — no upload.\n---\n\n\n### **Events:**\n - **ed-file-input-change** - Emitted whenever the selection changes (a file is added or removed).\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **focus(options: _FocusOptions_)** - Focuses the trigger, the control the user operates — the host itself takes no focus.\n- **handleValueChange(): _void_** - Mirrors an externally assigned `value` (e.g. `el.value = […]`) into the picker's visible chip\nlist. Guarded against the picker→value round trip: `handleSelectionChange` above derives\n`value` from `picker.files` on every real selection change, so by the time this watcher runs,\nan internally-driven `value` already equals `picker.files` — `sameFiles` catches that and\nskips, which is what breaks the value → picker.setFiles → (would-be) onChange → value loop.\n`picker.setFiles` never fires `onChange` anyway (see its own doc comment), so even without this\nguard there is no infinite loop — but without it every real selection would immediately (and\npointlessly) re-run through `setFiles` a second time.\n\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - **label** - The file input's label. Alternatively, you can use the `label` attribute.\n- **hint** - Text that describes how to use the file input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Parts:**\n - **label** - The label.\n- **form-control-label** - Alias for the label element.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.\n- **base** - The component wrapper.\n- **dropzone** - The drag & drop area.\n- **list** - The file list.\n- **file** - A single file row.\n- **file-name** - A file row's name.\n- **file-size** - A file row's size.\n- **file-actions** - A file row's action buttons.\n- **file-reason** - A rejected row's reason text.",
      "attributes": [
        {
          "name": "multiple",
          "description": "Allow selecting/dropping more than one file. Mirrors the native input's `multiple`.",
          "values": []
        },
        {
          "name": "accept",
          "description": "Comma-separated list of accepted types (extensions and/or MIME types), like the native `accept`.",
          "values": []
        },
        {
          "name": "max-files",
          "description": "Maximum number of files (multiple mode only).",
          "values": []
        },
        {
          "name": "max-file-size",
          "description": "Maximum size per file in MB (capped at 2048).",
          "values": []
        },
        {
          "name": "max-total-file-size",
          "description": "Maximum total size of all selected files in MB (capped at 2048).",
          "values": []
        },
        {
          "name": "label",
          "description": "The file input's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "The control's accessible name for when no visible label is set. Mirrored onto the internal\n`role=\"group\"` wrapper — an aria-label left on the host alone would sit on a role-less\nelement and be ignored by assistive tech — and carried by the trigger ahead of its action,\nas a visible label is.",
          "values": []
        },
        {
          "name": "required",
          "description": "Makes the file input a required field: at least one file must be selected.",
          "values": []
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup\nincludes the label before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the input, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/file-input"
        }
      ]
    },
    {
      "name": "ed-format-bytes",
      "description": "Formats a number as a human readable bytes value.\n---\n",
      "attributes": [
        {
          "name": "value",
          "description": "The number to format in bytes. A value that is not a finite number renders nothing.",
          "values": []
        },
        {
          "name": "unit",
          "description": "The type of unit to display.",
          "values": [{ "name": "byte" }, { "name": "bit" }]
        },
        {
          "name": "display",
          "description": "Determines how to display the result, e.g. \"100 bytes\", \"100 b\", or \"100b\".",
          "values": [
            { "name": "short" },
            { "name": "long" },
            { "name": "narrow" }
          ]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-bytes"
        }
      ]
    },
    {
      "name": "ed-format-date",
      "description": "Shows a date or time in the user's locale from a raw date value, so every date reads the same way across the\nproduct.\n---\n",
      "attributes": [
        {
          "name": "date",
          "description": "The date/time to format. If not set, the current date and time will be used. Set `null` or an empty value to\nrender nothing. A value that cannot be read renders nothing either, and says so in the console.\n\nWith no format options set, the output names what the value names — a month value shows a month, a year value a\nyear.\n\nA string is read as a **calendar day** when it carries no time of day (`2026-08-03`, `2026-08`, `2026`) and as an\n**exact instant** when it does (`2026-08-03T10:30:00Z`). A calendar day renders as the day it names in every time\nzone; an instant is expressed in the viewer's zone unless `time-zone` says otherwise. Use the ISO 8601 format either\nway — to serialize a `Date`, use\n[`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
          "values": [
            {
              "name": "{ toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@537: {  } }"
            }
          ]
        },
        {
          "name": "weekday",
          "description": "The format for displaying the weekday.",
          "values": [
            { "name": "short" },
            { "name": "long" },
            { "name": "narrow" }
          ]
        },
        {
          "name": "era",
          "description": "The format for displaying the era.",
          "values": [
            { "name": "short" },
            { "name": "long" },
            { "name": "narrow" }
          ]
        },
        {
          "name": "year",
          "description": "The format for displaying the year.",
          "values": [{ "name": "numeric" }, { "name": "2-digit" }]
        },
        {
          "name": "month",
          "description": "The format for displaying the month.",
          "values": [
            { "name": "short" },
            { "name": "long" },
            { "name": "numeric" },
            { "name": "2-digit" },
            { "name": "narrow" }
          ]
        },
        {
          "name": "day",
          "description": "The format for displaying the day.",
          "values": [{ "name": "numeric" }, { "name": "2-digit" }]
        },
        {
          "name": "hour",
          "description": "The format for displaying the hour.",
          "values": [{ "name": "numeric" }, { "name": "2-digit" }]
        },
        {
          "name": "minute",
          "description": "The format for displaying the minute.",
          "values": [{ "name": "numeric" }, { "name": "2-digit" }]
        },
        {
          "name": "second",
          "description": "The format for displaying the second.",
          "values": [{ "name": "numeric" }, { "name": "2-digit" }]
        },
        {
          "name": "time-zone-name",
          "description": "How to name the time zone beside the time, if at all. Unset shows no zone name. The `Offset` and `Generic` forms\nare the ones ECMA-402 adds beyond a plain name: `GMT-4`, `GMT-04:00`, `ET`, `Eastern Time`.",
          "values": [
            { "name": "short" },
            { "name": "long" },
            { "name": "shortOffset" },
            { "name": "longOffset" },
            { "name": "shortGeneric" },
            { "name": "longGeneric" }
          ]
        },
        {
          "name": "time-zone",
          "description": "The time zone to express the time in. Only meaningful for a `date` that names an instant — a calendar day names no\ninstant to convert, so it is ignored there and the day renders as written.",
          "values": []
        },
        {
          "name": "hour-format",
          "description": "Which clock the hour is read on. `auto` leaves that to the locale, which is what makes an\nunknown value behave like `auto` rather than like either explicit choice.",
          "values": [{ "name": "auto" }, { "name": "12" }, { "name": "24" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-date"
        }
      ]
    },
    {
      "name": "ed-format-number",
      "description": "Shows a number, amount or percentage in the user's locale from a raw value, so figures read and align the\nsame way everywhere.\n---\n",
      "attributes": [
        {
          "name": "value",
          "description": "The number to format.",
          "values": []
        },
        {
          "name": "type",
          "description": "The formatting style to use.",
          "values": [
            { "name": "percent" },
            { "name": "decimal" },
            { "name": "currency" }
          ]
        },
        {
          "name": "without-grouping",
          "description": "Turns off grouping separators.",
          "values": []
        },
        {
          "name": "currency",
          "description": "The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code to use when formatting.",
          "values": []
        },
        {
          "name": "currency-display",
          "description": "How to display the currency.",
          "values": [
            { "name": "symbol" },
            { "name": "code" },
            { "name": "narrowSymbol" },
            { "name": "name" }
          ]
        },
        {
          "name": "minimum-integer-digits",
          "description": "The minimum number of integer digits to use. Possible values are 1-21.",
          "values": []
        },
        {
          "name": "minimum-fraction-digits",
          "description": "The minimum number of fraction digits to use. Possible values are 0-100.",
          "values": []
        },
        {
          "name": "maximum-fraction-digits",
          "description": "The maximum number of fraction digits to use. Possible values are 0-100.",
          "values": []
        },
        {
          "name": "minimum-significant-digits",
          "description": "The minimum number of significant digits to use. Possible values are 1-21.",
          "values": []
        },
        {
          "name": "maximum-significant-digits",
          "description": "The maximum number of significant digits to use. Possible values are 1-21.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-number"
        }
      ]
    },
    {
      "name": "ed-header",
      "description": "Headers provide a consistent app bar with a logo area and a content area for navigation, search, or actions.\n---\n\n\n### **Slots:**\n - _default_ - The header's content (navigation, search, actions, etc.). Visually leading; use `margin-inline-start: auto` on a child to push it (and everything after it) to the right of the content row.\n- **logo** - The branding logo, at the trailing edge. Images and inline SVGs are sized to fit the header height automatically, including when wrapped in a link. The region collapses when the slot is empty.\n\n### **CSS Properties:**\n - **--ed-header-size** - The height of the header. An `ed-button[navbar]` inside the header reads it as its own minimum width, so those buttons stay square when this changes. Set it on a common ancestor (or the theme) rather than on the header alone to also reach `ed-app`'s navigation toggle, which is a sibling of the header rather than a child of it. _(default: var(--ed-size-13))_\n\n### **CSS Parts:**\n - **content** - The wrapper around the default slot.\n- **logo** - The wrapper around the `logo` slot.",
      "attributes": [
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/header"
        }
      ]
    },
    {
      "name": "ed-intersection-observer",
      "description": "Tracks immediate child elements and fires events as they move in and out of view.\n---\n\n\n### **Events:**\n - **ed-intersect** - Fired when a tracked element begins or ceases intersecting.\n\n### **Slots:**\n - _default_ - Elements to track. Only immediate children of the host are monitored.",
      "attributes": [
        {
          "name": "root",
          "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.",
          "values": []
        },
        {
          "name": "root-margin",
          "description": "Offset space around the root boundary. Accepts values like CSS margin syntax.",
          "values": []
        },
        {
          "name": "threshold",
          "description": "One or more space-separated values representing visibility percentages that trigger the observer callback.",
          "values": []
        },
        {
          "name": "intersect-class",
          "description": "CSS class applied to elements during intersection. Automatically removed when elements leave\nthe viewport, enabling pure CSS styling based on visibility state.",
          "values": []
        },
        {
          "name": "once",
          "description": "If enabled, observation ceases after initial intersection.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Deactivates the intersection observer functionality.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/intersection-observer"
        }
      ]
    },
    {
      "name": "ed-known-date",
      "description": "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.\n---\n\n\n### **Events:**\n - **input** - Emitted as the user types in any field.\n- **change** - Emitted when the committed value transitions to a new ISO date.\n- **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n \n- **focus(options: _FocusOptions_)** - Focuses the first empty field, or the first field when all are filled.\n- **blur()** - Removes focus from the known date.\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - **label** - The known date's group label. Alternatively, use the `label` attribute.\n- **hint** - Text that describes how to use the known date. Alternatively, use the `hint` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control's outer wrapper.\n- **form-control-label** - The wrapper inside the legend that styles the visible label text.\n- **form-control-input** - Alias on the fields row matching other form controls.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.\n- **known-date** - Alias on the fields row, for symmetry with the other form controls.\n- **fieldset** - The `<fieldset>` element grouping the three fields (or a `role=\"group\"` div).\n- **legend** - The `<legend>` element (when a label is present).\n- **fields** - The flex row holding the three field blocks.\n- **field** - Each field block (label + input).\n- **field-day** - Added to the day field block.\n- **field-month** - Added to the month field block.\n- **field-year** - Added to the year field block.\n- **field-label** - The text label below each field's input, styled like the hint.\n- **field-input** - The native `<input>` inside a field.",
      "attributes": [
        {
          "name": "value",
          "description": "The default value used for form reset.",
          "values": []
        },
        {
          "name": "required",
          "description": "Makes the known date required for form submission.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Makes the fields non-editable.",
          "values": []
        },
        {
          "name": "density",
          "description": "Controls the component's spacing density without affecting font-size.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "pill",
          "description": "Draws pill-style fields with rounded edges.",
          "values": []
        },
        {
          "name": "label",
          "description": "The known date's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "autocomplete",
          "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.",
          "values": []
        },
        {
          "name": "min",
          "description": "Earliest selectable date as `YYYY-MM-DD`.",
          "values": []
        },
        {
          "name": "max",
          "description": "Latest selectable date as `YYYY-MM-DD`.",
          "values": []
        },
        {
          "name": "locale",
          "description": "BCP-47 locale override. When empty, the inherited `lang` attribute is used.",
          "values": []
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the input, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/known-date"
        }
      ]
    },
    {
      "name": "ed-markdown",
      "description": "Shows markdown text as formatted HTML, for content written or delivered as markdown such as help texts or\nrelease notes.\n---\n\n\n### **Methods:**\n - **getMarkdownIt(): _MarkdownIt_** - Returns the shared MarkdownIt instance used by all `<ed-markdown>` components.\n- **updateAll(): _void_** - Re-renders all connected `<ed-markdown>` instances. Call this after changing the MarkdownIt configuration.\n- **renderMarkdown()** - Reads the script content, normalizes whitespace, parses markdown, and injects the result.\n\n### **Slots:**\n - _default_ - The markdown source, typically a `<script type=\"text/markdown\">` element. Its text content is parsed and rendered; the slot itself is never displayed.",
      "attributes": [
        {
          "name": "tab-size",
          "description": "The tab stop width used when converting leading tabs to spaces during whitespace normalization.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/markdown"
        }
      ]
    },
    {
      "name": "ed-mutation-observer",
      "description": "The Mutation Observer component offers a thin, declarative interface to the [`MutationObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver).\n---\n\n\n### **Events:**\n - **ed-mutation** - Emitted when a mutation is observed. The event detail contains a `mutationList` array of [`MutationRecord`](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord) objects.\n\n### **Slots:**\n - _default_ - The content to watch for mutations.",
      "attributes": [
        {
          "name": "attr",
          "description": "Watches for changes to attributes. To watch only specific attributes, separate them by a space, e.g.\n`attr=\"class id title\"`. To watch all attributes, use `*`.",
          "values": []
        },
        {
          "name": "attr-old-value",
          "description": "Indicates whether or not the attribute's previous value should be recorded when monitoring changes.",
          "values": []
        },
        {
          "name": "char-data",
          "description": "Watches for changes to the character data contained within the node.",
          "values": []
        },
        {
          "name": "char-data-old-value",
          "description": "Indicates whether or not the previous value of the node's text should be recorded.",
          "values": []
        },
        {
          "name": "child-list",
          "description": "Watches for the addition or removal of new child nodes.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables the observer.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/mutation-observer"
        }
      ]
    },
    {
      "name": "ed-switch",
      "description": "Switches allow the user to toggle an option on or off.\n---\n\n\n### **Events:**\n - **change** - Emitted when the control's checked state changes.\n- **input** - Emitted when the control receives input.\n- **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - The restorable state is the checkedness, because that is what the user entered — `value` comes\nback from the markup on its own, and the base class would otherwise write the restored state\nthere and leave the checkedness untouched. A native checkbox restores exactly the checkedness.\n- **click()** - Simulates a click on the switch.\n- **focus(options: _FocusOptions_)** - Sets focus on the switch.\n- **blur()** - Removes focus from the switch.\n- **setValue(args: _Parameters<EdFormAssociatedElement['setValue']>_)** - 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.\n\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - _default_ - The switch's label.\n- **hint** - Text that describes how to use the switch. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--ed-switch-width** - The width of the switch. _(default: undefined)_\n- **--ed-switch-height** - The height of the switch. _(default: undefined)_\n- **--ed-switch-thumb-size** - The size of the thumb. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The control that houses the switch's thumb.\n- **thumb** - The switch's thumb.\n- **label** - The switch's label.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.",
      "attributes": [
        { "name": "title", "values": [] },
        {
          "name": "aria-label",
          "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.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the switch, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "value",
          "description": "Removing the attribute has to be told apart from assigning `null`, and Lit hands the setter\n`null` for both. The converter marks the attribute path with a sentinel, so removing it restores\nthe `'on'` default the way a native checkbox does, while the property path keeps its own rule.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Makes the switch readonly.",
          "values": []
        },
        {
          "name": "checked",
          "description": "The default value of the form control. Primarily used for resetting the form control.",
          "values": []
        },
        {
          "name": "required",
          "description": "Makes the switch a required field.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/switch"
        }
      ]
    },
    {
      "name": "ed-page-editor",
      "description": "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.\n---\n\n\n### **Events:**\n - **ed-edit** - Emitted on every edit. `detail` is `{ files, dirty, valid }`.\n- **ed-request-preview** - 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.\n\n### **Methods:**\n - **providePagePreview(page: _PageEditorPage_, src: _string_, variant: _'thumbnail' | 'preview'_): _void_** - 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.\n- **provideSuggestions(suggestions: _{ id: string; suggestion: PageEditorSuggestion }[]_): _void_** - 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.\n- **getResult(): _PageEditorFile[]_** - 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`).\n- **isDirty(): _boolean_** - Returns true once any editable field differs from the input (used as the `ed-edit` dirty flag).\n\n### **Slots:**\n - **header** - Optional content shown at the start of the toolbar (defaults to the first file's name).\n- **actions** - Optional extra controls shown at the end of the toolbar.\n\n### **CSS Properties:**\n - **--ed-page-editor-page-width** - The page card width; derived from `zoom`. _(default: undefined)_\n\n### **CSS Parts:**\n - **toolbar** - The top bar (file name, zoom, hide-deleted toggle).\n- **subbar** - The action bar (select all, bulk actions, AI suggestions).\n- **canvas** - The scrollable area that lays out the page cards.\n- **page** - Each page card.\n- **cut-marker** - The split marker shown between two pages.",
      "attributes": [
        {
          "name": "ai-suggestions",
          "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).",
          "values": []
        },
        {
          "name": "suggestions-pending",
          "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`.",
          "values": []
        },
        {
          "name": "hide-deleted",
          "description": "Hide pages marked for deletion instead of dimming them in place.",
          "values": []
        },
        {
          "name": "zoom",
          "description": "Thumbnail zoom factor (1 = the default page size).",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Render the whole editor read-only.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/page-editor"
        }
      ]
    },
    {
      "name": "ed-progress-bar",
      "description": "Progress bars are used to show the status of an ongoing operation.\n---\n\n\n### **Slots:**\n - **label** - The progress bar's label. Alternatively, you can use the `label` attribute.\n\n### **CSS Properties:**\n - **--ed-progress-bar-track-height** - The height of the track. _(default: calc(2 * var(--ed-border-width-3)))_\n- **--ed-progress-bar-track-color** - The color of the track. _(default: var(--ed-color-slider-background-color))_\n- **--ed-progress-bar-indicator-color** - The color of the indicator. _(default: var(--ed-color-brand-fill-normal))_\n\n### **CSS Parts:**\n - **form-control-label** - The label element above the bar.\n- **base** - The component's base wrapper (track).\n- **indicator** - The progress bar's indicator (fill).",
      "attributes": [
        {
          "name": "value",
          "description": "The current progress as a percentage, 0 to 100. A value outside the range is drawn and reported\nat the nearer end of it; a value that is no number at all counts as 0.",
          "values": []
        },
        {
          "name": "indeterminate",
          "description": "When true, percentage is ignored and the progress bar is drawn in an indeterminate state.",
          "values": []
        },
        {
          "name": "label",
          "description": "The progress bar's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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).",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/progress-bar"
        }
      ]
    },
    {
      "name": "ed-radio-group",
      "description": "Radio groups are used to group multiple [radios](/a/eurodata-ui/docs/components/radio) so they function as a single form control.\n---\n\n\n### **Events:**\n - **input** - Emitted when the radio group receives user input.\n- **change** - Emitted when the radio group's selected value changes.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **setValue(args: _Parameters<EdFormAssociatedElement['setValue']>_)** - 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.\n- **focus(options: _FocusOptions_)** - Sets focus on the radio group.\n\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - _default_ - The default slot where `<ed-radio>` elements are placed.\n- **label** - The radio group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.\n- **hint** - Text that describes how to use the radio group. Alternatively, you can use the `hint` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and hint.\n- **form-control-label** - The label's wrapper.\n- **base** - The flex container holding the radios, and the sliding indicator when `appearance` is `button`.\n- **indicator** - The filled pill behind the checked segment, which slides between them. Only rendered when `appearance` is `button`.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.",
      "attributes": [
        {
          "name": "label",
          "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the radio group, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "The orientation in which to show radio items.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "readonly",
          "description": "Makes the radio group and all child radios readonly.",
          "values": []
        },
        {
          "name": "value",
          "description": "The default value of the form control. Primarily used for resetting the form control.",
          "values": []
        },
        {
          "name": "required",
          "description": "Ensures a child radio is checked before allowing the containing form to submit.",
          "values": []
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "appearance",
          "description": "The appearance of the radios in the group: `button` renders them as a segmented control, `card`\nas stacked cards carrying a title, a description and trailing chips.",
          "values": [
            { "name": "default" },
            { "name": "button" },
            { "name": "card" }
          ]
        },
        {
          "name": "aria-label",
          "description": "Accessible name for when no visible label is given. Mirrored onto the internal\n`role=\"radiogroup\"` node, where the role lives — the host is deliberately role-less, so a\nconsumer's aria-label would otherwise sit on an element assistive technology ignores.\n\nA visible label wins: the node references it with `aria-labelledby` while there is one, and\nonly then — accessible-name computation consults aria-labelledby first.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/radio-group"
        }
      ]
    },
    {
      "name": "ed-side-menu-title",
      "description": "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---\n\n\n### **Slots:**\n - _default_ - The default slot for the title text.\n- **start** - Leading content, e.g. an icon.\n\n### **CSS Properties:**\n - **--ed-side-menu-background** - Background color of the title row. _(default: var(--ed-color-surface-raised))_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **start** - Container for the start slot.\n- **label** - The label container.",
      "attributes": [
        {
          "name": "slim",
          "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`.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu-title"
        }
      ]
    },
    {
      "name": "ed-side-menu",
      "description": "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---\n\n\n### **Events:**\n - **ed-filter** - Emitted when the search filter value changes.\n- **ed-super-tab-change** - Emitted when the active super-tab changes. Detail contains `{ tab: string }`.\n\n### **Methods:**\n - **setCurrent(value: _string_)** - 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.\n\n### **Slots:**\n - _default_ - The default slot for `ed-side-menu-item` elements.\n- **footer** - `ed-side-menu-item` elements pinned to the bottom edge, below the scrolling list. They take part in `current`, the filter, `density` and `variant` like the items in the default slot, and come last in the Tab order.\n- **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### **CSS Properties:**\n - **--ed-side-menu-width** - The width of the menu. `ed-app` also reads it as the fallback width of its navigation column when nothing measurable is slotted in. _(default: 16.875rem)_\n- **--ed-side-menu-background** - Side-menu background color. _(default: var(--ed-color-surface-raised))_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **super-tabs** - Container for the super-tab bar.\n- **super-tab** - An individual super-tab button.\n- **filter** - Container for the search input.\n- **filter-input** - The search input element.\n- **tree-wrapper** - Scrollable container around the navigation items.\n- **footer** - Container around the footer slot, below the scrollable container.",
      "attributes": [
        {
          "name": "filter",
          "description": "Shows a search input that filters items by label and description text.",
          "values": []
        },
        {
          "name": "filter-placeholder",
          "description": "Placeholder text for the search input. Defaults to a localized \"Search\".",
          "values": []
        },
        {
          "name": "hide-indent-guides",
          "description": "Hides the indent guide lines between nested items. Reflected so the styling hook matches whether set via attribute or property.",
          "values": []
        },
        {
          "name": "current",
          "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.",
          "values": []
        },
        {
          "name": "active-tab",
          "description": "The currently active super-tab value. Defaults to the first tab.",
          "values": []
        },
        {
          "name": "density",
          "description": "Density of nav items.\n- `spacious` — relaxed rows (~52px), 24px start/end icons.\n- `default` — condensed rows (~40px), 16px start/end icons.\n- `compact` — minimal rows (`--ed-form-control-height`, ~32px), 16px start/end icons.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "variant",
          "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.",
          "values": [{ "name": "default" }, { "name": "slim" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu"
        }
      ]
    },
    {
      "name": "ed-rail-menu",
      "description": "A two-pane navigation: a slim [ed-side-menu](/a/eurodata-ui/docs/components/side-menu)\nrail selects a section, a second side-menu panel shows the section's pages. Three-stage responsive behavior.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the panel opens via user/API action (never from initialization or automatic stage changes). Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-hide** - Emitted when the panel closes via user/API action. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-show** - Emitted after the panel's opening transition finishes.\n- **ed-after-hide** - Emitted after the panel's closing transition finishes.\n- **ed-section-change** - 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.\n\n### **Methods:**\n - **showPanel()** - Opens the panel and emits ed-show / ed-after-show. No-op when already open.\n- **hidePanel()** - 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().\n- **setCurrent(value: _string_)** - Update `current` and synchronously re-resolve the active section (SPA route hooks).\n\n### **Slots:**\n - **rail** - Exactly one `ed-side-menu variant=\"slim\"` whose items may carry `panel=\"…\"` references.\n- **rail-header** - Optional content pinned above the rail slot, inside the rail column.\n- **rail-footer** - Optional content pinned below the rail column on expanded/medium, and below the panel on compact.\n- _default_ - 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`.\n\n### **CSS Properties:**\n - **--ed-rail-menu-rail-width** - Width of the rail column (mirrors the slim side-menu width). _(default: 6rem)_\n- **--ed-rail-menu-panel-width** - Width of the open panel on expanded/medium views. _(default: 15rem)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **rail** - The rail column wrapping the rail slot.\n- **rail-header** - The wrapper around the rail-header slot.\n- **rail-footer** - The wrapper around the rail-footer slot.\n- **panel** - The container around the panel slot.\n- **back-button** - The compact drilldown's back-to-level-1 button. Visible only on compact.",
      "attributes": [
        {
          "name": "panel",
          "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).",
          "values": []
        },
        {
          "name": "name",
          "description": "Contract attribute on slotted panel elements: the panel's identifier referenced by `panel`.",
          "values": []
        },
        {
          "name": "current",
          "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.",
          "values": []
        },
        {
          "name": "panel-open",
          "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.",
          "values": []
        },
        {
          "name": "compact-breakpoint",
          "description": "Below this viewport width the compact (drilldown) view renders. Keep in sync with `ed-app`'s `mobile-breakpoint`.",
          "values": []
        },
        {
          "name": "medium-breakpoint",
          "description": "Between the compact and this viewport width, the rail persists and the panel overlays.",
          "values": []
        },
        {
          "name": "view",
          "description": "The current responsive stage. Computed from the viewport; reflected for styling.",
          "values": [
            { "name": "expanded" },
            { "name": "medium" },
            { "name": "compact" }
          ]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/rail-menu"
        }
      ]
    },
    {
      "name": "ed-rating",
      "description": "Ratings give users a way to quickly view and provide feedback.\n---\n\n\n### **Events:**\n - **change** - Emitted when the rating's value changes.\n- **ed-hover** - Emitted when the user hovers over a value. The `phase` property indicates when hovering starts, moves to a new value, or ends. The `value` property tells what the rating's value would be if the user were to commit to the hovered value.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n \n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **CSS Properties:**\n - **--ed-rating-symbol-color** - The inactive color for symbols. _(default: undefined)_\n- **--ed-rating-symbol-color-active** - The active color for symbols. _(default: undefined)_\n- **--ed-rating-symbol-spacing** - The spacing to use around symbols. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
      "attributes": [
        {
          "name": "name",
          "description": "The name of the rating, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "label",
          "description": "A label that describes the rating to assistive devices.",
          "values": []
        },
        {
          "name": "value",
          "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.",
          "values": []
        },
        {
          "name": "default-value",
          "description": "The default value of the form control. Used to reset the rating to its initial value.",
          "values": []
        },
        {
          "name": "max",
          "description": "The highest rating to show.",
          "values": []
        },
        {
          "name": "precision",
          "description": "The precision at which the rating will increase and decrease. For example, to allow half-star ratings, set this\nattribute to `0.5`.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Makes the rating readonly.",
          "values": []
        },
        {
          "name": "required",
          "description": "Makes the rating a required field — a value of 0 counts as missing.",
          "values": []
        },
        {
          "name": "error",
          "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.",
          "values": []
        },
        {
          "name": "warning",
          "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.",
          "values": []
        },
        {
          "name": "ai",
          "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.",
          "values": []
        },
        {
          "name": "hint",
          "description": "Has no effect on `ed-rating`, which renders no hint area. Put explanatory text next to the\nrating instead.",
          "values": []
        },
        {
          "name": "icon",
          "description": "The icon name for inactive (unselected) symbols.",
          "values": []
        },
        {
          "name": "active-icon",
          "description": "The icon name for active (selected) symbols.",
          "values": []
        },
        {
          "name": "density",
          "description": "The component's density.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/rating"
        }
      ]
    },
    {
      "name": "ed-relative-time",
      "description": "Outputs a localized time phrase relative to the current date and time.\n---\n",
      "attributes": [
        {
          "name": "date",
          "description": "The date from which to calculate time from. If not set, the current date and time will be used. Set `null` or an\nempty value to render nothing. A value that cannot be read renders nothing either, and says so in the console.\n\nA string is read as a **calendar day** when it carries no time of day (`2026-08-03`, `2026-08`, `2026`) and as an\n**exact instant** when it does (`2026-08-03T10:30:00Z`). A calendar day counts from its local midnight, so the\nphrase does not flip to the neighboring day depending on the viewer's zone. Use the ISO 8601 format either way — to\nserialize a `Date`, use\n[`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
          "values": [
            {
              "name": "{ toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@537: {  } }"
            }
          ]
        },
        {
          "name": "display",
          "description": "Determines how to display the result, from the most verbose form down to the shortest. Some\nlocales render `short` and `narrow` alike.",
          "values": [
            { "name": "short" },
            { "name": "long" },
            { "name": "narrow" }
          ]
        },
        {
          "name": "numeric",
          "description": "When `auto`, values such as \"yesterday\" and \"tomorrow\" will be shown when possible. When `always`, values such as\n\"1 day ago\" and \"in 1 day\" will be shown.",
          "values": [{ "name": "auto" }, { "name": "always" }]
        },
        {
          "name": "sync",
          "description": "Keep the displayed value up to date as time passes.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/relative-time"
        }
      ]
    },
    {
      "name": "ed-resize-observer",
      "description": "The Resize Observer component offers a thin, declarative interface to the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n---\n\n\n### **Events:**\n - **ed-resize** - Emitted when a watched element is resized. The event detail contains an `entries` array of [`ResizeObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry) objects.\n\n### **Slots:**\n - _default_ - One or more elements to watch for resizing.",
      "attributes": [
        {
          "name": "disabled",
          "description": "Disables the observer.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/resize-observer"
        }
      ]
    },
    {
      "name": "ed-scroller",
      "description": "Scrollers create an accessible container while providing visual cues that help users identify and navigate\nthrough content that scrolls.\n---\n\n\n### **Slots:**\n - _default_ - The content to show inside the scroller.\n\n### **CSS Properties:**\n - **--ed-scroller-shadow-color** - The base color of the shadow. _(default: var(--ed-color-surface-default))_\n- **--ed-scroller-shadow-size** - The size of the shadow. _(default: 2rem)_\n\n### **CSS Parts:**\n - **content** - The container that wraps the slotted content.\n- **start-shadow** - The shadow overlay at the scroller's start edge.\n- **end-shadow** - The shadow overlay at the scroller's end edge.",
      "attributes": [
        {
          "name": "orientation",
          "description": "The scroller's orientation.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "without-scrollbar",
          "description": "Removes the visible scrollbar.",
          "values": []
        },
        {
          "name": "without-shadow",
          "description": "Removes the shadows.",
          "values": []
        },
        {
          "name": "aria-label",
          "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).",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/scroller"
        }
      ]
    },
    {
      "name": "ed-scrollspy-item",
      "description": "A single item inside [ed-scrollspy](/a/eurodata-ui/docs/components/scrollspy). Renders as an anchor link so right-click, keyboard, and share-link work natively.\n---\n\n\n### **Slots:**\n - _default_ - The item's label text. It renders inside the row's anchor, so nested items belong in the `children` slot.\n- **children** - 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.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **link** - The clickable anchor row.\n- **rail** - The vertical line column to the inline-start of the label. Tinted for the active section.\n- **dot** - The circular indicator on the rail. Solid-filled when active.\n- **label** - The visible item label.\n- **count** - The child-count badge on parent items (rendered when `count > 0`).\n- **children** - Container for nested level-2 items.",
      "attributes": [
        {
          "name": "href",
          "description": "Anchor target — the heading id this item points to (e.g. `#anatomy`).",
          "values": []
        },
        {
          "name": "active",
          "description": "Whether this item's heading is the active scroll target. Set by the parent; do not write directly.",
          "values": []
        },
        {
          "name": "parent-active",
          "description": "Whether this is a level-1 item whose level-2 child is active. Set by the parent; do not write directly.",
          "values": []
        },
        {
          "name": "passed",
          "description": "Whether the reader has scrolled past this item. Set by the parent; do not write directly.",
          "values": []
        },
        {
          "name": "count",
          "description": "Number of level-2 children inside this item. Set by the parent on level-1 items.",
          "values": []
        },
        {
          "name": "show-count",
          "description": "When true, render the count badge. Gated by the parent's `show-counts` attribute.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/scrollspy-item"
        }
      ]
    },
    {
      "name": "ed-scrollspy",
      "description": "Tracks the user's scroll position through a long page and highlights the corresponding entry in a vertical \"on this page\" rail. Two-level hierarchy with declarative or auto-discovered items.\n---\n\n\n### **Events:**\n - **ed-scrollspy-change** - Fired when the active heading changes.\n\n### **Methods:**\n - **recomputeActive()** - Public test hook: synchronously recompute active item from current scroll position.\nSide-menu's `setCurrent()` is the precedent for an externally-callable sync escape hatch.\n- **scrollToId(id: _string_)** - 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.\n\n### **Slots:**\n - _default_ - The default slot for `<ed-scrollspy-item>` elements when authoring declaratively.\n\n### **CSS Parts:**\n - **base** - The inner `<nav>` element.\n- **list** - The top-level `<ul>` rendered for auto-discovered items.",
      "attributes": [
        {
          "name": "for",
          "description": "CSS selector for the article whose headings should be auto-discovered.\nSlot children take precedence — when both are present, auto-discovery is silently skipped.",
          "values": []
        },
        {
          "name": "headings",
          "description": "CSS selector for the headings to scan inside the `for=` target. The first match becomes a level-1 item, the second a level-2 child.",
          "values": []
        },
        {
          "name": "expand",
          "description": "Children-display mode.\n- `'active'` — level-2 children visible only under the active level-1 parent.\n- `'all'` — all level-2 children always visible.\n\nTo get an L1-only rail, narrow the scan with `headings=\"h2\"` instead — that way\nthe spy never tracks h3s, so scrolling past one can't steal the active state from\nits parent.",
          "values": [{ "name": "active" }, { "name": "all" }]
        },
        {
          "name": "show-counts",
          "description": "When true, parent items render a child-count badge with their level-2 child count.",
          "values": []
        },
        {
          "name": "label",
          "description": "Sets `aria-label` on the inner `<nav>`. Defaults to a localized \"On this page\".",
          "values": []
        },
        {
          "name": "density",
          "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).",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "active-id",
          "description": "Currently active heading id. Reflected for CSS hooks; consumers should treat as\nread-only outside tests.",
          "values": []
        },
        {
          "name": "offset",
          "description": "Probe-line position from the scroll region's top (the article's scroll container when\nthe article is `overflow:auto`/`scroll`, otherwise the viewport). CSS length string\n(default `'25%'` — a quarter into the scroll region).\n\n`%` is interpreted relative to the scroll region's height; `vh`/`vw` always refer to\nthe viewport per CSS convention; `px`/`rem`/`em` are absolute. Override when a sticky\npage header consumes part of the scroll region.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/scrollspy"
        }
      ]
    },
    {
      "name": "ed-split-panel",
      "description": "Split panels display two adjacent panels, allowing the user to resize them.\n---\n\n\n### **Events:**\n - **ed-reposition** - Emitted when the divider's position changes.\n\n### **Slots:**\n - **start** - Content to place in the start panel.\n- **end** - Content to place in the end panel.\n- **divider** - The divider. Useful for slotting in a custom icon that renders as a handle.\n\n### **CSS Properties:**\n - **--ed-split-panel-divider-width** - The width of the visible divider. In `rem`, so it grows with the user's base font size; a pixel value freezes it. _(default: 0.25rem)_\n- **--ed-split-panel-divider-hit-area** - The invisible region around the divider where dragging can occur. This is usually wider than the divider to facilitate easier dragging. _(default: 0.75rem)_\n- **--ed-split-panel-min** - 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. _(default: 0%)_\n- **--ed-split-panel-max** - The maximum allowed size of the primary panel. _(default: 100%)_\n\n### **CSS Parts:**\n - **start** - The start panel.\n- **end** - The end panel.\n- **panel** - Targets both the start and end panels.\n- **divider** - The divider that separates the start and end panels.\n- **handle** - The default drag handle rendered in the center of the divider when no custom divider is slotted.",
      "attributes": [
        {
          "name": "position",
          "description": "The current position of the divider from the primary panel's edge as a percentage 0-100. Defaults to 50% of the\ncontainer's initial size.",
          "values": []
        },
        {
          "name": "position-in-pixels",
          "description": "The current position of the divider from the primary panel's edge in pixels.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "Sets the split panel's orientation.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "disabled",
          "description": "Disables resizing. Note that the position may still change as a result of resizing the host element.",
          "values": []
        },
        {
          "name": "primary",
          "description": "If no primary panel is designated, both panels will resize proportionally when the host element is resized. If a\nprimary panel is designated, it will maintain its size and the other panel will grow or shrink as needed when the\nhost element is resized.",
          "values": [{ "name": "start" }, { "name": "end" }]
        },
        {
          "name": "snap",
          "description": "One or more space-separated values at which the divider should snap. Values can be in pixels or percentages, e.g.\n`\"100px 50%\"`.",
          "values": []
        },
        {
          "name": "snap-threshold",
          "description": "How close the divider must be to a snap point until snapping occurs.",
          "values": []
        },
        {
          "name": "aria-label",
          "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).",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/split-panel"
        }
      ]
    },
    {
      "name": "ed-stepper",
      "description": "Steppers guide users through a process step by step, breaking it into clear stages. Use them for\ncheckout flows, multi-step setup, onboarding, or to show the status of a process.\n---\n\n\n### **Events:**\n - **ed-stepper-before-change** - Emitted before the active step changes through a click or `goTo()`/`next()`/`previous()`. Calling `event.preventDefault()` keeps the current step, e.g. to guard against invalid or unsaved data. Assigning `active` does not emit it.\n- **ed-stepper-change** - Emitted after the active step changed through a click or `goTo()`/`next()`/`previous()`. Assigning `active` does not emit it.\n\n### **Methods:**\n - **goTo(name: _string_)** - Requests a change to the named step. Emits a cancelable `ed-stepper-before-change`; if not canceled, updates\n`active`, emits `ed-stepper-change` and announces the new position to assistive technology. Does nothing if the\nstep doesn't exist, is already active, is disabled, or (in `linear` mode) can't be reached yet.\n- **next()** - Advances to the next step after the active one that is not disabled, if any. In `linear` mode that step still has\nto be reachable, so a disabled step that is not completed stops it.\n- **previous()** - Goes back to the nearest step before the active one that is not disabled, if any.\n\n### **Slots:**\n - _default_ - One or more `<ed-step>` elements.\n\n### **CSS Properties:**\n - **--ed-stepper-gap** - The space between steps. _(default: var(--ed-space-6))_\n- **--ed-stepper-marker-size** - The size of each step's marker. _(default: 2em)_\n- **--ed-stepper-connector-color** - The color of the connector line after a step that isn't completed. _(default: var(--ed-color-neutral-border-light))_\n- **--ed-stepper-connector-color-active** - The color of the connector line after a completed step. Unset by default, so the line takes the light border color of the completed step's `variant`. _(default: undefined)_\n- **--ed-stepper-connector-width** - The thickness of the connector line, in either orientation. _(default: var(--ed-border-width-2))_\n- **--ed-stepper-connector-gap** - The gap between a marker's edge and the connector line, on both sides. Kept clear of the marker geometrically, so it holds even if a marker's background is transparent. _(default: 0.35em)_\n\n### **CSS Parts:**\n - **stepper** - The component's outer wrapper. A `<nav>` landmark when the stepper is `clickable`, since its steps are then controls you can navigate with; otherwise a labeled `role=\"group\"`, since a display-only stepper has nothing to navigate.\n- **summary** - Visually hidden \"Step X of Y\" text that tells assistive technology where the active step sits.\n- **steps** - The `<ol>` that lays out the steps.",
      "attributes": [
        {
          "name": "active",
          "description": "The name of the active step. Falls back to the first step if unset, or if it doesn't match any step's name.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "The stepper's layout direction. `auto` lays steps out in a row and stacks them when the stepper is too narrow\nto give each step about 6em of width, so labels stay legible on small screens. It relies on measuring the\nstepper, so a server-rendered `auto` stepper starts as a row and stacks once it hydrates, which is why\n`horizontal` is the default.",
          "values": [
            { "name": "auto" },
            { "name": "horizontal" },
            { "name": "vertical" }
          ]
        },
        {
          "name": "linear",
          "description": "Requires steps to be completed in order. When set, `next()`/`goTo()`/a `data-stepper` invoker and, if\n`clickable` is also set, clicking or activating a step can't reach a step until every step before it is\ncompleted, a disabled one included.\nEvery step past that point renders as locked, except the active one.",
          "values": []
        },
        {
          "name": "clickable",
          "description": "Allows clicking a step, or focusing it and pressing Enter/Space, to jump straight to it. When unset, only\n`next()`/`previous()`/`goTo()` change the active step, e.g. from your own Next/Back buttons or a\n`data-stepper` invoker.",
          "values": []
        },
        {
          "name": "label",
          "description": "A label that describes the stepper to assistive devices. Especially useful when more than one is on the page.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/stepper"
        }
      ]
    },
    {
      "name": "ed-tab",
      "description": "Tabs are used inside [tab groups](/a/eurodata-ui/docs/components/tab-group) to represent and activate [tab panels](/a/eurodata-ui/docs/components/tab-panel).\n---\n\n\n### **Events:**\n - **ed-tab-close** - Emitted when the tab's close button is activated, or when Delete is pressed while the tab has focus.\n\n### **Slots:**\n - _default_ - The tab's label.\n- **start** - An element, such as `<ed-icon>`, placed before the label.\n- **end** - An element, such as `<ed-icon>`, placed after the label.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **content** - The container that wraps the start slot, label and end slot.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.\n- **label** - The label wrapper.",
      "attributes": [
        {
          "name": "panel",
          "description": "The name of the tab panel this tab is associated with. The panel must be located in the same tab group.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables the tab and prevents selection.",
          "values": []
        },
        {
          "name": "closable",
          "description": "Make the tab closable",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tab"
        }
      ]
    },
    {
      "name": "ed-tab-panel",
      "description": "Tab panels are used inside [tab groups](/a/eurodata-ui/docs/components/tab-group) to display tabbed content.\n---\n\n\n### **Slots:**\n - _default_ - The tab panel's content.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
      "attributes": [
        {
          "name": "name",
          "description": "The tab panel's name.",
          "values": []
        },
        {
          "name": "active",
          "description": "When true, the tab panel will be shown.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tab-panel"
        }
      ]
    },
    {
      "name": "ed-tab-group",
      "description": "Tab groups organize content into a container that shows one section at a time.\n---\n\n\n### **Events:**\n - **ed-tab-show** - Emitted when a tab is shown.\n- **ed-tab-hide** - Emitted when a tab is hidden.\n- **ed-tab-close** - 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.\n\n### **Slots:**\n - _default_ - 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.\n- **nav** - 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.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **nav** - The tab group's navigation container where tabs are slotted in.\n- **tabs** - The container that wraps the tabs.\n- **body** - The tab group's body where tab panels are slotted in.\n- **scroll-button** - The previous/next scroll buttons that show when tabs are scrollable, a `<ed-button>`.\n- **scroll-button-start** - The starting scroll button.\n- **scroll-button-end** - The ending scroll button.",
      "attributes": [
        {
          "name": "active",
          "description": "Sets the active tab.",
          "values": []
        },
        {
          "name": "placement",
          "description": "The placement of the tabs.",
          "values": [
            { "name": "left" },
            { "name": "right" },
            { "name": "top" },
            { "name": "bottom" }
          ]
        },
        {
          "name": "appearance",
          "description": "The visual appearance of the tab group.",
          "values": [
            { "name": "filled" },
            { "name": "outlined" },
            { "name": "plain" }
          ]
        },
        {
          "name": "activation",
          "description": "When set to auto, navigating tabs with the arrow keys will instantly show the corresponding tab panel. When set to\nmanual, the tab will receive focus but will not show until the user presses spacebar or enter.",
          "values": [{ "name": "auto" }, { "name": "manual" }]
        },
        {
          "name": "stretch",
          "description": "Makes all tabs equal width, stretching to fill the available space.",
          "values": []
        },
        {
          "name": "without-scroll-controls",
          "description": "Disables the scroll arrows that appear when tabs overflow.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tab-group"
        }
      ]
    },
    {
      "name": "ed-tag-input",
      "description": "Tag inputs collect a list of short values, such as keywords, email addresses or labels, as removable tags.\nUsers add a tag by typing and pressing Enter or a delimiter, and each tag is submitted as its own form value.\n---\n\n\n### **Events:**\n - **input** - Emitted when the user types in the text box or when a tag is added or removed.\n- **change** - Emitted when a tag is added, removed, or all tags are cleared by the user.\n- **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n- **ed-tag-input-create** - Emitted before typed text becomes a tag. Cancelable; calling `preventDefault()` rejects it. `detail.inputValue` is the trimmed text that would become the tag.\n- **ed-clear** - Emitted when the tags are cleared by the clear button or by Escape.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n \n- **focus(options: _FocusOptions_)** - Sets focus on the text box.\n- **blur()** - Removes focus from the text box.\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - **label** - The tag input's label. Alternatively, you can use the `label` attribute.\n- **start** - An element, such as `<ed-icon>`, placed at the start of the control.\n- **end** - An element, such as `<ed-icon>`, placed at the end of the control.\n- **clear-icon** - An icon to use in lieu of the default clear icon.\n- **hint** - Text that describes how to use the tag input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Parts:**\n - **form-control-label** - The label.\n- **label** - The label. The same element as `form-control-label`, named like the label of `<ed-input>`.\n- **tag-input** - The bordered box that holds the tags and the text box.\n- **start** - The container that wraps the `start` slot.\n- **tags** - The list that holds the tags.\n- **tag** - Each tag, an `<ed-badge>`.\n- **tag__base** - The tag's exported `base` part, the badge's surface.\n- **tag__remove-icon** - The tag's exported `remove-icon` part, the `<button>` that removes the tag.\n- **input** - The internal text box, an `<input>` element.\n- **clear-button** - The clear button.\n- **end** - The container that wraps the `end` slot.\n- **message** - The state message: an error, a warning, or the AI note.\n- **hint** - The hint's wrapper.",
      "attributes": [
        {
          "name": "value",
          "description": "The default value of the form control as a delimiter-separated string. Primarily used for resetting the form\ncontrol.",
          "values": []
        },
        {
          "name": "delimiter",
          "description": "The characters that turn typed text into a tag. Each character is a separate delimiter, so `\",;\"` accepts both\ncommas and semicolons. Pasted text is split on the same characters. Set to an empty string so only Enter adds a\ntag. Also used to parse the `value` attribute, which falls back to a comma when the delimiter is empty.",
          "values": []
        },
        {
          "name": "max-tags",
          "description": "The maximum number of tags that can be added. Once reached, no more tags can be added until one is removed.",
          "values": []
        },
        {
          "name": "min-tags",
          "description": "The minimum number of tags required for the control to be valid. Has no effect when there are no tags.",
          "values": []
        },
        {
          "name": "allow-duplicates",
          "description": "Allows the same tag to be added more than once. By default, duplicates are ignored.",
          "values": []
        },
        {
          "name": "with-clear",
          "description": "Adds a clear button that removes all tags, and makes Escape empty the control.",
          "values": []
        },
        {
          "name": "placeholder",
          "description": "Placeholder text to show in the text box. Hidden once the maximum number of tags is reached.",
          "values": []
        },
        {
          "name": "label",
          "description": "The tag input's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "The tag input's accessible name for when no visible label is set. Mirrored onto the internal text box, where the\ntextbox role lives, and onto the list of tags.",
          "values": []
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup\nincludes the label before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup\nincludes the hint before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "density",
          "description": "Controls the component's spacing density without affecting font-size.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "pill",
          "description": "Draws a pill-style tag input with rounded edges. The tags are pill-shaped either way.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Makes the tag input readonly. Tags stay visible and are still submitted, but can't be added or removed.",
          "values": []
        },
        {
          "name": "required",
          "description": "Makes the tag input a required field, so at least one tag must be added.",
          "values": []
        },
        {
          "name": "autocapitalize",
          "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
          "values": [
            { "name": "none" },
            { "name": "off" },
            { "name": "on" },
            { "name": "sentences" },
            { "name": "words" },
            { "name": "characters" }
          ]
        },
        {
          "name": "autocorrect",
          "description": "Indicates whether the browser's autocorrect feature is on or off. When set as an attribute, use `\"off\"` or `\"on\"`.\nWhen set as a property, use `true` or `false`.",
          "values": []
        },
        {
          "name": "autocomplete",
          "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.\nDefaults to `off`.",
          "values": []
        },
        {
          "name": "enterkeyhint",
          "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
          "values": [
            { "name": "next" },
            { "name": "previous" },
            { "name": "search" },
            { "name": "send" },
            { "name": "done" },
            { "name": "enter" },
            { "name": "go" }
          ]
        },
        {
          "name": "spellcheck",
          "description": "Enables spell checking on the text box.",
          "values": []
        },
        {
          "name": "inputmode",
          "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
          "values": [
            { "name": "search" },
            { "name": "text" },
            { "name": "numeric" },
            { "name": "none" },
            { "name": "email" },
            { "name": "tel" },
            { "name": "url" },
            { "name": "decimal" }
          ]
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "name",
          "description": "The name of the input, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tag-input"
        }
      ]
    },
    {
      "name": "ed-textarea",
      "description": "Textareas collect data from the user and allow multiple lines of text.\n---\n\n\n### **Events:**\n - **blur** - Emitted when the control loses focus.\n- **change** - Emitted when an alteration to the control's value is committed by the user.\n- **focus** - Emitted when the control gains focus.\n- **input** - Emitted when the control receives input.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **focus(options: _FocusOptions_)** - Sets focus on the textarea.\n- **blur()** - Removes focus from the textarea.\n- **select()** - Selects all the text in the textarea.\n- **scrollPosition(position: _{ top?: number; left?: number }_): _{ top: number; left: number } | undefined_** - Gets or sets the textarea's scroll position.\n- **setSelectionRange(selectionStart: _number_, selectionEnd: _number_, selectionDirection: _'forward' | 'backward' | 'none'_)** - Sets the start and end positions of the text selection (0-based).\n- **setRangeText(replacement: _string_, start: _number_, end: _number_, selectMode: _'select' | 'start' | 'end' | 'preserve'_)** - Replaces a range of text with a new string.\n\n\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n\n\n\n### **Slots:**\n - **label** - The textarea's label. Alternatively, you can use the `label` attribute.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Parts:**\n - **label** - The label\n- **message** - The state message: an error, a warning, or the AI note.\n- **footer** - The row below the control that holds the hint and the character count.\n- **hint** - The hint's wrapper.\n- **base** - The wrapper around the `<textarea>` control.\n- **textarea** - The internal `<textarea>` control.\n- **count** - The character count element, rendered when the `with-count` attribute is present.",
      "attributes": [
        { "name": "title", "values": [] },
        {
          "name": "name",
          "description": "The name of the textarea, submitted as a name/value pair with form data.",
          "values": []
        },
        {
          "name": "value",
          "description": "The default value of the form control. Primarily used for resetting the form control.",
          "values": []
        },
        {
          "name": "density",
          "description": "Controls the component's spacing density without affecting font-size.",
          "values": [
            { "name": "compact" },
            { "name": "default" },
            { "name": "spacious" }
          ]
        },
        {
          "name": "label",
          "description": "The textarea's label. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "aria-label",
          "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.",
          "values": []
        },
        {
          "name": "placeholder",
          "description": "Placeholder text to show as a hint when the input is empty.",
          "values": []
        },
        {
          "name": "rows",
          "description": "The number of rows to display by default.",
          "values": []
        },
        {
          "name": "resize",
          "description": "Controls how the textarea can be resized.",
          "values": [
            { "name": "auto" },
            { "name": "both" },
            { "name": "horizontal" },
            { "name": "vertical" },
            { "name": "none" }
          ]
        },
        {
          "name": "readonly",
          "description": "Makes the textarea readonly.",
          "values": []
        },
        {
          "name": "required",
          "description": "Makes the textarea a required field.",
          "values": []
        },
        {
          "name": "minlength",
          "description": "The minimum length of input that will be considered valid.",
          "values": []
        },
        {
          "name": "maxlength",
          "description": "The maximum length of input that will be considered valid.",
          "values": []
        },
        {
          "name": "autocapitalize",
          "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
          "values": [
            { "name": "none" },
            { "name": "off" },
            { "name": "on" },
            { "name": "sentences" },
            { "name": "words" },
            { "name": "characters" }
          ]
        },
        {
          "name": "autocorrect",
          "description": "Indicates whether the browser's autocorrect feature is on or off. When set as an attribute, use `\"off\"` or `\"on\"`.\nWhen set as a property, use `true` or `false`.",
          "values": []
        },
        {
          "name": "autocomplete",
          "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
          "values": []
        },
        {
          "name": "autofocus",
          "description": "Indicates that the input should receive focus on page load.",
          "values": []
        },
        {
          "name": "enterkeyhint",
          "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
          "values": [
            { "name": "next" },
            { "name": "previous" },
            { "name": "search" },
            { "name": "send" },
            { "name": "done" },
            { "name": "enter" },
            { "name": "go" }
          ]
        },
        {
          "name": "spellcheck",
          "description": "Enables spell checking on the textarea.",
          "values": []
        },
        {
          "name": "inputmode",
          "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
          "values": [
            { "name": "search" },
            { "name": "text" },
            { "name": "numeric" },
            { "name": "none" },
            { "name": "email" },
            { "name": "tel" },
            { "name": "url" },
            { "name": "decimal" }
          ]
        },
        {
          "name": "with-label",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-hint",
          "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
          "values": []
        },
        {
          "name": "with-count",
          "description": "Shows a character count below the textarea. When `maxlength` is set, shows remaining characters instead.",
          "values": []
        },
        {
          "name": "error",
          "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the 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.",
          "values": []
        },
        {
          "name": "warning",
          "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
          "values": []
        },
        {
          "name": "ai",
          "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`.",
          "values": []
        },
        {
          "name": "hint",
          "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
          "values": []
        },
        {
          "name": "disabled",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/textarea"
        }
      ]
    },
    {
      "name": "ed-tree",
      "description": "Trees allow you to display a hierarchical list of selectable [tree items](/a/eurodata-ui/docs/components/tree-item). Items with children can be expanded and collapsed as desired by the user.\n---\n\n\n### **Events:**\n - **ed-selection-change** - Emitted when a tree item is selected or deselected.\n\n### **Slots:**\n - _default_ - The default slot.\n- **expand-icon** - The icon to show when the tree item is expanded. Works best with `<ed-icon>`.\n- **collapse-icon** - The icon to show when the tree item is collapsed. Works best with `<ed-icon>`.\n\n### **CSS Properties:**\n - **--ed-tree-width** - The width of the tree. _(default: 15.625rem)_\n- **--ed-tree-indent-size** - The size of the indentation for nested items. Derived from indent-guide geometry so the highlight stays flush against the guide regardless of font-size; override only when the indent column needs to grow or shrink visibly (and accept that the highlight will then float). _(default: undefined)_\n- **--ed-tree-indent-guide-color** - The color of the indentation line. _(default: var(--ed-color-border))_\n- **--ed-tree-indent-guide-active-color** - The color of the indentation line segment next to a selected item. _(default: var(--ed-color-brand-fill-normal))_\n- **--ed-tree-indent-guide-offset** - Reserved for vertical offset of the indent guide; currently unused with per-item rendering and kept for future use. _(default: 0)_\n- **--ed-tree-indent-guide-style** - The style of the indentation line, e.g. solid, dotted, dashed. _(default: solid)_\n- **--ed-tree-indent-guide-width** - The width of the indentation line. Set to 0 (or use the `hide-indent-guides` attribute) to hide the guides entirely. _(default: var(--ed-border-width-2))_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
      "attributes": [
        {
          "name": "selection",
          "description": "The selection behavior of the tree. Single selection allows only one node to be selected at a time. Multiple\ndisplays checkboxes and allows more than one node to be selected. Leaf allows only leaf nodes to be selected,\nwhile parent nodes only expand and collapse.",
          "values": [
            { "name": "single" },
            { "name": "multiple" },
            { "name": "leaf" }
          ]
        },
        {
          "name": "hide-indent-guides",
          "description": "Hides the vertical guide lines between nested items. By default the guides are shown.",
          "values": []
        },
        {
          "name": "chevron-placement",
          "description": "Where to render the expand/collapse chevron — at the row's start (default) or end.",
          "values": [{ "name": "start" }, { "name": "end" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tree"
        }
      ]
    },
    {
      "name": "ed-upload",
      "description": "Generic file upload: drag & drop, validation and per-file upload progress.\n---\n\n\n### **Events:**\n - **ed-upload-change** - Emitted when the set of files changes (added or removed).\n- **ed-upload-progress** - Emitted while a file uploads.\n- **ed-upload-finished** - Emitted once all queued uploads have settled.\n- **ed-upload-error** - Emitted on a validation rejection or a failed upload.\n- **ed-file-preview** - Emitted when a file's preview action is activated (requires `viewable`).\n\n### **Methods:**\n - **retryFile(name: _string_): _void_** - Re-queues a failed file and restarts the upload — the File object is still held in memory.\n- **removeFile(name: _string_): _void_** - Removes a file from the list, or dismisses a rejected row. Aborts the upload if it is in flight.\n\n### **CSS Properties:**\n - **--ed-upload-illustration-size** - Size of the drag & drop illustration icon. Raise it when the dropzone fills a large area (e.g. a full-screen scan dialog). _(default: 4rem)_\n\n### **CSS Parts:**\n - **base** - The component wrapper.\n- **dropzone** - The drag & drop area.\n- **summary** - The \"N files · size\" summary (multi mode).\n- **list** - The file list (multi mode).\n- **file** - A single file row.\n- **file-name** - A file row's name.\n- **file-size** - A file row's size.\n- **file-actions** - A file row's action buttons.\n- **file-status** - A file row's status cell (progress bar or status icon).\n- **file-reason** - A rejected row's reason text.",
      "attributes": [
        {
          "name": "multiple",
          "description": "Allow selecting/dropping more than one file (mirrors the native input's `multiple`).",
          "values": []
        },
        {
          "name": "accept",
          "description": "Comma-separated list of accepted types (extensions and/or MIME types), like the native `accept`.",
          "values": []
        },
        {
          "name": "upload-url",
          "description": "Target URL the files are POSTed to.",
          "values": []
        },
        {
          "name": "upload-file-part-name",
          "description": "FormData part name used for each file.",
          "values": []
        },
        {
          "name": "max-files",
          "description": "Maximum number of files (multi mode).",
          "values": []
        },
        {
          "name": "max-file-size",
          "description": "Maximum size per file in MB (capped at 2048).",
          "values": []
        },
        {
          "name": "max-total-file-size",
          "description": "Maximum total upload size in MB (capped at 2048).",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Disables interaction.",
          "values": []
        },
        {
          "name": "viewable",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/upload"
        }
      ]
    },
    {
      "name": "ed-wizard",
      "description": "Guides users through a task step by step: a stepper showing where they are, the active step's content,\nand buttons to move between steps, finish or cancel.\n---\n\n\n### **Events:**\n - **ed-wizard-before-change** - Emitted before the active step changes through the buttons, a click in the stepper or `goTo()`/`next()`/`previous()`. Calling `event.preventDefault()` keeps the current step. Assigning `active` does not emit it.\n- **ed-wizard-change** - Emitted after the active step changed through the buttons, a click in the stepper or `goTo()`/`next()`/`previous()`. Assigning `active` does not emit it.\n- **ed-wizard-finish** - Emitted when the Finish button is activated.\n- **ed-wizard-cancel** - Emitted when the Cancel button is activated.\n\n### **Methods:**\n - **goTo(name: _string_)** - Requests a change to the named step. Emits a cancelable `ed-wizard-before-change`; if not canceled, makes the\nstep active and emits `ed-wizard-change`. Does nothing if the step doesn't exist, is already active, is disabled,\nor (with `linear`) can't be reached yet.\n- **next()** - Goes to the next step that is not disabled, unless Next is disabled.\n- **previous()** - Goes back to the nearest step before the active one that is not disabled, unless Previous is disabled.\n\n### **Slots:**\n - _default_ - One or more `<ed-wizard-step>` elements.\n- **label** - The wizard's title. Alternatively, you can use the `label` attribute.\n- **sublabel** - The wizard's subtitle. Alternatively, you can use the `sublabel` attribute.\n- **nav** - Replaces the built-in Previous, Next, Finish and Cancel buttons.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **header** - The area holding the title, the subtitle and the stepper.\n- **title** - The wizard's title.\n- **subtitle** - The wizard's subtitle.\n- **stepper** - The `<ed-stepper>` showing the steps.\n- **content** - The wrapper of the active step's content.\n- **nav** - The wrapper of the navigation buttons, or of what is slotted into `nav`.\n- **previous** - The Previous button.\n- **next** - The Next button.\n- **finish** - The Finish button.\n- **cancel** - The Cancel button.",
      "attributes": [
        {
          "name": "label",
          "description": "The wizard's title. If you need to display HTML, use the `label` slot instead.",
          "values": []
        },
        {
          "name": "sublabel",
          "description": "The wizard's subtitle. If you need to display HTML, use the `sublabel` slot instead.",
          "values": []
        },
        {
          "name": "active",
          "description": "The name of the active step. Falls back to the first step if unset, or if it doesn't match any step. Assigning it\nchanges the step without emitting `ed-wizard-before-change` or `ed-wizard-change` and without moving focus.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "Lays the stepper out above the content (`horizontal`) or in a column beside it (`vertical`).",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "clickable",
          "description": "Allows jumping to a step by clicking it in the stepper, or focusing it and pressing Enter/Space.",
          "values": []
        },
        {
          "name": "linear",
          "description": "Requires steps to be completed in order. A step counts as completed only through its own `completed` attribute;\nwithout `linear`, every step before the furthest one reached also shows as completed. Next stays disabled while\nthe active step is not completed, and neither `goTo()` nor a click in the stepper can reach a step after the\nfirst incomplete one.",
          "values": []
        },
        {
          "name": "next-disabled",
          "description": "Disables the Next button, e.g. until the consumer's validation passes. `next()` is refused as well.",
          "values": []
        },
        {
          "name": "previous-disabled",
          "description": "Disables the Previous button, e.g. while an async operation is in progress. `previous()` is refused as well.",
          "values": []
        },
        {
          "name": "scroll-to-top",
          "description": "Scrolls the content back to the top after the user or a method changes the step.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard"
        }
      ]
    },
    {
      "name": "ed-zoomable-frame",
      "description": "Zoomable frames render iframe content with zoom and interaction controls.\n---\n\n\n### **Events:**\n - **load** - Emitted when the internal iframe when it finishes loading.\n- **error** - Emitted from the internal iframe when it fails to load.\n\n### **Methods:**\n - **zoomIn()** - Zooms in to the next available zoom level.\n- **zoomOut()** - Zooms out to the previous available zoom level.\n\n### **Slots:**\n - **zoom-in-icon** - The slot that contains the zoom in icon.\n- **zoom-out-icon** - The slot that contains the zoom out icon.\n\n### **CSS Parts:**\n - **iframe** - The internal `<iframe>` element.\n- **controls** - The container that surrounds zoom control buttons.\n- **zoom-in-button** - The zoom in button.\n- **zoom-out-button** - The zoom out button.",
      "attributes": [
        {
          "name": "src",
          "description": "The URL of the content to display.",
          "values": []
        },
        {
          "name": "srcdoc",
          "description": "Inline HTML to display.",
          "values": []
        },
        {
          "name": "allow",
          "description": "The permissions policy for the framed document, as the native `<iframe allow>` takes it, e.g.\n`clipboard-write; fullscreen`.",
          "values": []
        },
        {
          "name": "allowfullscreen",
          "description": "Allows fullscreen mode.",
          "values": []
        },
        {
          "name": "name",
          "description": "The frame's name, so a link or form on the page can target it with `target=\"…\"`.",
          "values": []
        },
        {
          "name": "loading",
          "description": "Controls iframe loading behavior.",
          "values": [{ "name": "eager" }, { "name": "lazy" }]
        },
        {
          "name": "referrerpolicy",
          "description": "Controls referrer information.",
          "values": []
        },
        {
          "name": "label",
          "description": "An accessible label for the iframe. Recommended for screen readers.",
          "values": []
        },
        {
          "name": "sandbox",
          "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.",
          "values": []
        },
        {
          "name": "zoom",
          "description": "The current zoom of the frame, e.g. 0 = 0% and 1 = 100%.",
          "values": []
        },
        {
          "name": "zoom-levels",
          "description": "The zoom levels to step through when using zoom controls. This does not restrict programmatic changes to the zoom.",
          "values": []
        },
        {
          "name": "without-controls",
          "description": "Removes the zoom controls.",
          "values": []
        },
        {
          "name": "without-interaction",
          "description": "Disables interaction when present.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/zoomable-frame"
        }
      ]
    },
    {
      "name": "ed-widget-ed-scan",
      "description": "Self-contained edScan feature for uploading scanned documents, splitting them into pages and editing the\nresult with AI-assisted suggestions.\n---\n\n\n### **Events:**\n - **ed-scan-cancel** - Fired after the user cancels the session: the whole session is discarded and all files are lost. Reports a cancellation that already happened, so it is not cancelable.\n- **ed-scan-finish** - Fired after the user saves and the session ends. `event.detail` is the list of created files, each `{ filename, filesize }`.\n\n### **Methods:**\n - **close()** - closes the edScan dialog\n- **show()** - opens the edScan dialog\n\n### **Slots:**\n - **logo** - An image (your logo) shown at the end of the dialog header.",
      "attributes": [
        {
          "name": "base-url",
          "description": "the base url to the service - change this to switch between dev, staging or prod",
          "values": []
        },
        {
          "name": "open",
          "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.",
          "values": []
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/widget-ed-scan"
        }
      ]
    },
    {
      "name": "ed-widget-news",
      "description": "Shows eurodata release news and useful information to users in a panel inside the product.\n---\n\n\n### **Events:**\n - **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- **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. Cancelable; calling `preventDefault()` keeps the widget running.\n- **ed-news-count-changed** - This event fires when the total number of news items is determined and returns the exact number. It fires when the session changes (that also means initially). You can get the amount with `event.detail.count`. Use this to hide or disable your trigger button when the count is 0.\n- **ed-unread-news-count-changed** - This event fires when the amount of unread news items for the user is changed and returns the exact number. The amount of unread news is calculated when the session changes (that also means initially), when the open attribute is set to true or when the user selects an unseen news object and thus reducing the count by one. You can get the amount with `event.detail.count`.\n- **ed-show** - Emitted when the news widget opens. Cancelable; calling `preventDefault()` keeps it closed.\n- **ed-after-show** - Emitted after the news widget opens and its open animation completes.\n- **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. Cancelable; calling `preventDefault()` keeps it open.\n- **ed-after-hide** - Emitted after the news widget closes and its close animation completes.\n\n### **CSS Properties:**\n - **--ed-news-height** - The height of the news dialog. Clamped by the dialog's own max-height on short viewports. _(default: 50rem)_\n\n### **CSS Parts:**\n - **base** - The components base wrapper, an ed-dialog element\n- **aside** - The components aside that holds the navigation on desktop; becomes a collapsible drawer on narrow widths\n- **sidebar** - The navigation wrapper\n- **sidebar-entry** - The items inside the navigation wrapper\n- **external-button** - External button, that shows depending on the news object\n- **menu-toggle** - The hamburger button that opens the navigation drawer on narrow widths\n- **close-button** - The close button that closes the dialog",
      "attributes": [
        {
          "name": "open",
          "description": "Indicates whether the dialog is open. Toggle this attribute to show and hide the dialog. Open can never be initially be true since the session must be internally validated before allowing open to be true.",
          "values": []
        },
        {
          "name": "label",
          "description": "The dialog's label as displayed in the header.",
          "values": []
        },
        {
          "name": "base-url",
          "description": "The base url for the news service",
          "values": []
        },
        {
          "name": "mobile-breakpoint",
          "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`.",
          "values": []
        },
        {
          "name": "view",
          "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.",
          "values": [{ "name": "mobile" }, { "name": "desktop" }]
        },
        { "name": "dir", "values": [] },
        { "name": "lang", "values": [] }
      ],
      "references": [
        {
          "name": "Documentation",
          "url": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/widget-news"
        }
      ]
    }
  ]
}
