The component library compiler records public prop names but drops their local destructuring aliases when generating a render method. A component using const { class: classList } = withDefaults(defineProps<Props>(), { class: 'login-input' }) therefore emits const { class = 'login-input' } = this._props(), which is invalid JavaScript. Aliases such as label: caption also leave template references to caption unresolved.
This is present in the framework's real InputGroup.stx sample. The native library build reports success, but the generated package cannot be imported by JavaScript consumers. A standalone Chrome regression reproduces the failure through the emitted ESM modules: neither the supplied-value nor default-value component renders.
The existing alias test checks metadata only. The compiler needs to retain the authored property binding in the executable render scope as well.
Related source qualification: stacksjs/stacks#3029. Do not rewrite consumer components to remove valid aliases.
Acceptance:
- Preserve the public prop name, authored local alias and defaults in generated render code.
- Keep runtime attributes and type/manifest fields named after the public prop.
- Verify supplied values, defaults and reactive attribute changes in a real browser using emitted ESM modules.
- Pass the component library suite, types, lint, full source checks and normal release gates.
- Qualify original published packages and rebuild the real framework sample through normal dependency adoption.