Generated component libraries overwrite native HTMLElement properties when a source component declares a prop with the same name. The real framework sample declares style?: string and onclick?: string: its elements replace the native style object and event handler accessor with prop storage accessors. The declarations repeat those string fields on classes extending HTMLElement and fail a strict TypeScript consumer check.
Two standalone regressions reproduce the problem. Chrome reports that element.style is not a CSSStyleDeclaration, and assigning a native click handler does not behave like a normal HTMLElement. A real TypeScript consumer, with skipLibCheck: false, rejects both the generated classes and ordinary native style/click usage. This is separate from the prop alias correction in #2128.
Related release qualification: stacksjs/stacks#3029. Suppressing declaration checks or changing valid source aliases is not a fix.
Acceptance:
- Preserve native DOM property descriptors on generated elements.
- Keep declared attributes available to the component render scope and reactive bindings, including after native attribute/property changes.
- Preserve native property types in emitted element declarations while retaining custom prop fields and the source Props interface.
- Cover native style mutation, click handler assignment and real clicks, attribute reactivity and a strict TypeScript consumer without DOM stubs.
- Pass the component library suite, types, lint, full source and normal patch release gates.
- Qualify original published packages and the rebuilt real framework sample before downstream acceptance.