html-aria
Version:
Utilities for creating accessible HTML based on the latest ARIA 1.3 specs. Lightweight, performant, tree-shakeable, and 0 dependencies.
1 lines • 382 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../src/lib/aria-roles.ts","../src/lib/util.ts","../src/tags/li.ts","../src/get-acc-name.ts","../src/get-elements.ts","../src/get-required-attributes.ts","../src/lib/html.ts","../src/tags/aside.ts","../src/tags/footer.ts","../src/tags/header.ts","../src/tags/input.ts","../src/tags/select.ts","../src/tags/svg.ts","../src/tags/td.ts","../src/tags/th.ts","../src/get-role.ts","../src/lib/aria-attributes.ts","../src/get-supported-attributes.ts","../src/get-supported-roles.ts","../src/is-interactive.ts","../src/is-name-required.ts"],"sourcesContent":["import type {\n AbstractRole,\n ARIAAttribute,\n ARIARole,\n DigitalPublishingRole,\n DocumentStructureRole,\n GraphicsRole,\n LandmarkRole,\n LiveRegionRole,\n VirtualElement,\n WidgetRole,\n WindowRole,\n} from '../types.js';\n\nexport type RoleType =\n | 'abstract'\n | 'widget'\n | 'document'\n | 'landmark'\n | 'liveregion'\n | 'window'\n | 'graphics'\n | 'digitalpublishing';\n\n// note: all fields required to be monomorphic\nexport interface RoleData {\n /**\n * A list of roles which are allowed on an accessibility child (simplified as \"child\") of the element with this role.\n * @see https://w3c.github.io/aria/#mustContain\n */\n allowedChildRoles: ARIARole[];\n /**\n * The DOM descendants are presentational.\n * @see https://w3c.github.io/aria/#childrenArePresentational\n */\n childrenPresentational: boolean;\n /**\n * Default values for role supported ARIA attributes (if any)\n * @see https://www.w3.org/TR/wai-aria-1.3/#implictValueForRole\n *\n * OR\n *\n * Fallback values for role required ARIA attributes (if any)\n * @see https://www.w3.org/TR/wai-aria-1.3/#document-handling_author-errors_states-properties\n *\n * ARIA attribute defaults independent of role constraints are not exposed here.\n */\n defaultAttributeValues: Record<string, boolean | number | string>;\n /** Which HTML elements inherit this role, if any (note: attributes may be necessary) */\n elements: VirtualElement[];\n name: ARIARole;\n /**\n * @see https://w3c.github.io/aria/#namefromauthor\n * @see https://w3c.github.io/aria/#namefromcontent\n * @see https://w3c.github.io/aria/#namefromprohibited\n */\n nameFrom: 'author' | 'authorAndContents' | 'contents' | 'prohibited';\n /** Role that require an accessible name. */\n nameRequired: boolean;\n /**\n * aria-* attributes that are explicitly prohibited for this role, and are considered an error if set.\n * @see https://www.w3.org/TR/wai-aria-1.3/#prohibitedattributes\n */\n prohibited: ARIAAttribute[];\n /**\n * If given, states that this role can only exist within this container\n * @see https://www.w3.org/TR/wai-aria-1.3/#scope\n */\n requiredParentRoles: ARIARole[];\n /**\n * aria-* attributes that MUST be set for this role.\n * @see https://www.w3.org/TR/wai-aria-1.3/#requiredState\n */\n required: ARIAAttribute[];\n superclasses: (ARIARole | AbstractRole)[]; // ignores abstract roles\n subclasses: (ARIARole | AbstractRole)[]; // ignores abstract roles\n /**\n * aria-* attributes that MAY be set for this role.\n * Note: this includes required attributes, supported attributes, and inherited attributes from superclass role types.\n * @see https://www.w3.org/TR/wai-aria-1.3/#supportedState\n * @see https://www.w3.org/TR/wai-aria-1.3/#inheritedattributes\n */\n supported: ARIAAttribute[];\n type: RoleType[];\n}\n\nexport const widgetRoles: Record<WidgetRole, RoleData> = {\n /** An input that allows for user-triggered actions when clicked or pressed. See related link. */\n button: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {},\n elements: [{ tagName: 'button' }],\n name: 'button',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['command'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-pressed', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A checkable input that has three possible values: true, false, or mixed. */\n checkbox: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-checked': false,\n },\n elements: [{ tagName: 'input', attributes: { type: 'checkbox' } }],\n name: 'checkbox',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: ['aria-checked'],\n requiredParentRoles: [],\n subclasses: ['switch'],\n superclasses: ['input'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-checked', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** An input that controls another element, such as a listbox or grid, that can dynamically pop up to help the user set the value of the input. */\n combobox: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {\n 'aria-haspopup': 'listbox',\n 'aria-expanded': false,\n },\n elements: [{ tagName: 'select' }],\n name: 'combobox',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n // Note: aria-controls isn’t required by ARIA 1.3, but AAM requires aria-controls for most implementations of comboboxes\n // @see https://www.w3.org/TR/html-aam-1.0/#el-input-textetc-autocomplete\n required: ['aria-controls', 'aria-expanded'],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['input'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys. */\n grid: {\n allowedChildRoles: ['caption', 'row', 'rowgroup'],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'table', attributes: { role: 'grid' } }],\n name: 'grid',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: ['treegrid'],\n superclasses: ['composite', 'table'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-colcount', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-multiselectable', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-roledescription', 'aria-rowcount'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A cell in a grid or treegrid. */\n gridcell: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [\n { tagName: 'td', attributes: { role: 'gridcell' } },\n { tagName: 'th', attributes: { role: 'gridcell' } },\n ],\n name: 'gridcell',\n nameFrom: 'authorAndContents',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: ['row'],\n subclasses: ['columnheader', 'rowheader'],\n superclasses: ['cell', 'widget'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** An interactive reference to an internal or external resource that, when activated, causes the user agent to navigate to that resource. See related button. */\n link: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'a' }, { tagName: 'area' }],\n name: 'link',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: ['doc-backlink', 'doc-biblioref', 'doc-glossref', 'doc-noteref'],\n superclasses: ['command'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A widget that allows the user to select one or more items from a list of choices. See related combobox and list. */\n listbox: {\n allowedChildRoles: ['group', 'option'],\n childrenPresentational: false,\n defaultAttributeValues: {\n 'aria-orientation': 'vertical',\n },\n elements: [{ tagName: 'select', attributes: { multiple: true } }],\n name: 'listbox',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['select'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A type of widget that offers a list of choices to the user. */\n menu: {\n allowedChildRoles: ['group', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'separator'],\n childrenPresentational: false,\n defaultAttributeValues: {\n 'aria-orientation': 'vertical',\n },\n elements: [],\n name: 'menu',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: ['menubar'],\n superclasses: ['select'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-orientation', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A presentation of menu that usually remains visible and is usually presented horizontally. */\n menubar: {\n allowedChildRoles: ['group', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'separator'],\n childrenPresentational: false,\n defaultAttributeValues: {\n 'aria-orientation': 'horizontal',\n },\n elements: [],\n name: 'menubar',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['menu'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-orientation', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** An option in a set of choices contained by a menu or menubar. */\n menuitem: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [],\n name: 'menuitem',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: ['menu', 'menubar', 'group'],\n subclasses: ['menuitemcheckbox', 'menuitemradio'],\n superclasses: ['command'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-setsize'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A menuitem with a checkable state whose possible values are true, false, or mixed. */\n menuitemcheckbox: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-checked': false,\n },\n elements: [],\n name: 'menuitemcheckbox',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: ['aria-checked'],\n requiredParentRoles: ['menu', 'menubar', 'group'],\n subclasses: [],\n superclasses: ['menuitem'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-checked', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-setsize'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A checkable menuitem in a set of elements with the same role, only one of which can be checked at a time. */\n menuitemradio: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-checked': false,\n },\n elements: [],\n name: 'menuitemradio',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: ['aria-checked'],\n requiredParentRoles: ['menu', 'menubar', 'group'],\n subclasses: [],\n superclasses: ['menuitem'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-checked', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-setsize'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** An item in a listbox. */\n option: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {},\n elements: [{ tagName: 'option' }],\n name: 'option',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: ['listbox', 'group'],\n subclasses: ['treeitem'],\n superclasses: ['input'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-checked', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-selected', 'aria-setsize'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** An element that displays the progress status for tasks that take a long time. */\n progressbar: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-valuemax': 100,\n 'aria-valuemin': 0,\n },\n elements: [{ tagName: 'progress' }],\n name: 'progressbar',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['range', 'widget'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A checkable input in a group of elements with the same role, only one of which can be checked at a time. */\n radio: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-checked': false,\n },\n elements: [{ tagName: 'input', attributes: { type: 'radio' } }],\n name: 'radio',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: ['aria-checked'],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['input'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-checked', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-setsize'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A group of radio buttons. */\n radiogroup: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [],\n name: 'radiogroup',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['select'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-orientation', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A row of cells in a tabular container. */\n row: {\n allowedChildRoles: ['cell', 'columnheader', 'gridcell', 'rowheader'],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'tr' }],\n name: 'row',\n nameFrom: 'authorAndContents',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: ['grid', 'table', 'treegrid', 'rowgroup'],\n subclasses: [],\n superclasses: ['group', 'widget'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-colindex', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-rowindex', 'aria-rowindextext', 'aria-selected', 'aria-setsize'], // biome-ignore format: long list\n type: ['document', 'widget'],\n },\n /** A graphical object that controls the scrolling of content within a viewing area, regardless of whether the content is fully displayed within the viewing area. */\n scrollbar: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-orientation': 'vertical',\n 'aria-valuemax': 100,\n 'aria-valuemin': 0,\n // If missing or not a number,(aria-valuemax - aria-valuemin) / 2. If present but less than aria-valuemin, the value of aria-valuemin. If present but greater than aria-valuemax, the value of aria-valuemax.\n // 'aria-valuenow': TBD\n },\n elements: [],\n name: 'scrollbar',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: ['aria-controls', 'aria-valuenow'],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['range', 'widget'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-orientation', 'aria-owns', 'aria-relevant', 'aria-roledescription', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A type of textbox intended for specifying search criteria. See related textbox and search. */\n searchbox: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'input', attributes: { type: 'search' } }],\n name: 'searchbox',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['textbox'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-multiline', 'aria-owns', 'aria-placeholder', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A divider that separates and distinguishes sections of content or groups of menuitems. */\n separator: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-orientation': 'horizontal',\n 'aria-valuemax': 100,\n 'aria-valuemin': 0,\n // If missing or not a number,(aria-valuemax - aria-valuemin) / 2. If present but less than aria-valuemin, the value of aria-valuemin. If present but greater than aria-valuemax, the value of aria-valuemax.\n // 'aria-valuenow': TBD\n },\n elements: [{ tagName: 'hr' }],\n name: 'separator',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: [], // aria-valuenow (if focusable)\n requiredParentRoles: [],\n subclasses: ['doc-pagebreak'],\n superclasses: ['structure', 'widget'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-orientation', 'aria-owns', 'aria-relevant', 'aria-roledescription', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext'], // biome-ignore format: long list\n type: ['widget', 'document'],\n },\n /** An input where the user selects a value from within a given range. */\n slider: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-orientation': 'horizontal',\n 'aria-valuemax': 100,\n 'aria-valuemin': 0,\n // If missing or not a number,(aria-valuemax - aria-valuemin) / 2. If present but less than aria-valuemin, the value of aria-valuemin. If present but greater than aria-valuemax, the value of aria-valuemax.\n // 'aria-valuenow': TBD\n },\n elements: [{ tagName: 'input', attributes: { type: 'range' } }],\n name: 'slider',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: ['aria-valuenow'],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['input', 'range'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-orientation', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-roledescription', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A form of range that expects the user to select from among discrete choices. */\n spinbutton: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'input', attributes: { type: 'number' } }],\n name: 'spinbutton',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['composite', 'input', 'range'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A type of checkbox that represents on/off values, as opposed to checked/unchecked values. See related checkbox. */\n switch: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-checked': false,\n },\n elements: [{ tagName: 'input', attributes: { type: 'checkbox', role: 'switch' } }],\n name: 'switch',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: ['aria-checked'],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['checkbox'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-checked', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A grouping label providing a mechanism for selecting the tab content that is to be rendered to the user. */\n tab: {\n allowedChildRoles: [],\n childrenPresentational: true,\n defaultAttributeValues: {\n 'aria-selected': false,\n },\n elements: [{ tagName: 'button', attributes: { type: 'button', role: 'tab' } }],\n name: 'tab',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: ['tablist'],\n subclasses: [],\n superclasses: ['sectionhead', 'widget'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-selected', 'aria-setsize'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A list of tab elements, which are references to tabpanel elements. */\n tablist: {\n allowedChildRoles: ['tab'],\n childrenPresentational: false,\n defaultAttributeValues: {\n 'aria-orientation': 'horizontal',\n },\n elements: [\n { tagName: 'menu', attributes: { role: 'tablist' } },\n { tagName: 'ol', attributes: { role: 'tablist' } },\n { tagName: 'ul', attributes: { role: 'tablist' } },\n ],\n name: 'tablist',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['composite'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A container for the resources associated with a tab, where each tab is contained in a tablist. */\n tabpanel: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [],\n name: 'tabpanel',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['section'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A type of input that allows free-form text as its value. */\n textbox: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'input', attributes: { type: 'text' } }],\n name: 'textbox',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: ['searchbox'],\n superclasses: ['input'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-multiline', 'aria-owns', 'aria-placeholder', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A widget that allows the user to select one or more items from a hierarchically organized collection. */\n tree: {\n allowedChildRoles: ['group', 'treeitem'],\n childrenPresentational: false,\n defaultAttributeValues: {\n 'aria-orientation': 'vertical',\n },\n elements: [\n { tagName: 'menu', attributes: { role: 'tree' } },\n { tagName: 'ol', attributes: { role: 'tree' } },\n { tagName: 'ul', attributes: { role: 'tree' } },\n ],\n name: 'tree',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: ['treegrid'],\n superclasses: ['select'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-relevant', 'aria-required', 'aria-roledescription'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** A grid whose rows can be expanded and collapsed in the same manner as for a tree. */\n treegrid: {\n allowedChildRoles: ['caption', 'row', 'rowgroup'],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'table', attributes: { role: 'treegrid' } }],\n name: 'treegrid',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['grid', 'tree'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-colcount', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount'], // biome-ignore format: long list\n type: ['widget'],\n },\n /** An item in a tree. */\n treeitem: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [],\n name: 'treeitem',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: ['tree', 'group'],\n subclasses: [],\n superclasses: ['listitem', 'option'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-checked', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-selected', 'aria-setsize'], // biome-ignore format: long list\n type: ['widget'],\n },\n};\n\nexport const documentRoles: Record<DocumentStructureRole, RoleData> = {\n /** A structure containing one or more focusable elements requiring user input, such as keyboard or gesture events, that do not follow a standard interaction pattern supported by a widget role. */\n application: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [],\n name: 'application',\n nameFrom: 'author',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['structure'],\n supported: ['aria-activedescendant', 'aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['document'],\n },\n /** A section of a page that consists of a composition that forms an independent part of a document, page, or site. */\n article: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'article' }],\n name: 'article',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: ['comment'],\n superclasses: ['document'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-setsize'], // biome-ignore format: long list\n type: ['document'],\n },\n /** A section of content that is quoted from another source. */\n blockquote: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'blockquote' }],\n name: 'blockquote',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['section'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['document'],\n },\n /** Visible content that names, or describes a figure, grid, group, radiogroup, table or treegrid. */\n caption: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'caption' }, { tagName: 'figcaption' }],\n name: 'caption',\n nameFrom: 'prohibited',\n nameRequired: false,\n prohibited: ['aria-braillelabel', 'aria-label', 'aria-labelledby'],\n required: [],\n requiredParentRoles: ['figure', 'grid', 'group', 'radiogroup', 'table', 'treegrid'],\n subclasses: [],\n superclasses: ['section'],\n supported: ['aria-atomic', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['document'],\n },\n /** A cell in a tabular container. See related gridcell. */\n cell: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'td' }],\n name: 'cell',\n nameFrom: 'authorAndContents',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: ['row'],\n subclasses: ['columnheader', 'gridcell', 'rowheader'],\n superclasses: ['section'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan'], // biome-ignore format: long list\n type: ['document'],\n },\n /** A section whose content represents a fragment of computer code. */\n code: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'code' }],\n name: 'code',\n nameFrom: 'prohibited',\n nameRequired: false,\n prohibited: ['aria-braillelabel', 'aria-label', 'aria-labelledby'],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['section'],\n supported: ['aria-atomic', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['document'],\n },\n /** A cell containing header information for a column. */\n columnheader: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'th', attributes: { scope: 'col' } }],\n name: 'columnheader',\n nameFrom: 'authorAndContents',\n nameRequired: true,\n prohibited: [],\n required: [],\n requiredParentRoles: ['row'],\n subclasses: [],\n superclasses: ['cell', 'gridcell', 'sectionhead'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-sort'], // biome-ignore format: long list\n type: ['document'],\n },\n /** A comment contains content expressing reaction to other content. */\n comment: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [],\n name: 'comment',\n nameFrom: 'authorAndContents',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['article'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-owns', 'aria-posinset', 'aria-relevant', 'aria-roledescription', 'aria-setsize'], // biome-ignore format: long list\n type: ['document'],\n },\n /** A definition of a term or concept. See related term. */\n definition: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [],\n name: 'definition',\n nameFrom: 'prohibited',\n nameRequired: false,\n prohibited: ['aria-braillelabel', 'aria-label', 'aria-labelledby'],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['section'],\n supported: ['aria-atomic', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['document'],\n },\n /** A deletion represents content that is marked as removed, content that is being suggested for removal, or content that is no longer relevant in the context of its accompanying content. See related insertion. */\n deletion: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'del' }],\n name: 'deletion',\n nameFrom: 'prohibited',\n nameRequired: false,\n prohibited: ['aria-braillelabel', 'aria-label', 'aria-labelledby'],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['section'],\n supported: ['aria-atomic', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['document'],\n },\n /**\n * A list of references to members of a group, such as a static table of contents.\n * @deprecated in ARIA 1.2\n */\n directory: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [],\n name: 'directory',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['list'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['document'],\n },\n /** An element containing content that assistive technology users might want to browse in a reading mode. */\n document: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'html' }],\n name: 'document',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: ['article', 'graphics-document'],\n superclasses: ['structure'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['document'],\n },\n /** One or more emphasized characters. See related strong. */\n emphasis: {\n allowedChildRoles: [],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [{ tagName: 'em' }],\n name: 'emphasis',\n nameFrom: 'prohibited',\n nameRequired: false,\n prohibited: ['aria-braillelabel', 'aria-label', 'aria-labelledby'],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['section'],\n supported: ['aria-atomic', 'aria-brailleroledescription', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-hidden', 'aria-keyshortcuts', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription'], // biome-ignore format: long list\n type: ['document'],\n },\n /** A scrollable list of articles where scrolling might cause articles to be added to or removed from either end of the list. */\n feed: {\n allowedChildRoles: ['article'],\n childrenPresentational: false,\n defaultAttributeValues: {},\n elements: [],\n name: 'feed',\n nameFrom: 'author',\n nameRequired: false,\n prohibited: [],\n required: [],\n requiredParentRoles: [],\n subclasses: [],\n superclasses: ['list'],\n supported: ['aria-atomic', 'aria-braillelabel', 'aria-brail