/** * Which element a part is, when the contract does not say otherwise. * * A table from part name to semantic element: `control` is an input, `popup` is a dialog, a * `gridcell` is a cell. Read by the conformance harness as much as by a renderer, which is why it * is data rather than a switch inside the builder. */ import type { MdyWidgetSemanticElement } from "../structure.js"; export declare function semanticElement(partName: string): MdyWidgetSemanticElement; /** * Variation the contract permits, and why. * * Measured across all three renderers in the resting state. Each of these is a part left `optional` * on purpose; without the reason written down, "optional" is indistinguishable from "nobody asked". * * - `select.value` and `multiselect.placeholder` are an either/or: a renderer shows the chosen value * or, when there is none, the placeholder. Both parts exist; only one is on screen at a time. * - `supportingText` may be replaced by the error list rather than shown beside it. Renderers differ, * and both are defensible — which is why a projection is told whether the description was rendered * rather than assuming it. * - `file.clear` and `file.fileList` are a feature choice: a file field may offer to clear its * selection and to list what was chosen, and one that does neither is still a file field. * - `file.rejected` is on screen only when the field has just turned a candidate away, which is a * state and not a feature: a field that has refused nothing shows nothing there. * * One measured difference is *not* covered here and is not a rendering question: the numeric kinds * start at `0` in one renderer and `null` in another, so `required` passes on one and fails on the * other. That is a value-semantics disagreement and belongs with the value dimension, not the DOM. */