CSF-Factories: Allow kebab-case HTML attribute names in web components args#33526
Merged
Conversation
…s args When using @wc-toolkit/storybook-helpers or similar libraries that generate args with kebab-case attribute names (e.g., 'static-color'), TypeScript would error because our types only allowed camelCase property names. This adds `InferArgsFromComponent<C>` which allows both: - camelCase properties from HTMLElementTagNameMap (type-checked) - kebab-case strings containing `-` (for HTML attributes) Since JavaScript property names cannot contain `-`, any string with a dash is definitively an HTML attribute name, making this a safe heuristic. Closes #33524 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
Contributor
📝 WalkthroughWalkthroughAdds type-level support for kebab-case HTML attribute names in Web Components Storybook arg inference and a new test validating kebab-case args; also adds a .gitignore entry. Changes
Sequence Diagram(s)(No sequence diagrams generated — changes are type-level and a unit test; conditions for diagrams not met.) Estimated code review effort🎯 4 (Complex) | ⏱️ ~40 minutes Possibly related PRs
📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
Comment |
|
View your CI Pipeline Execution ↗ for commit 1753a9a
☁️ Nx Cloud last updated this comment at |
|
View your CI Pipeline Execution ↗ for commit a2e09fa ☁️ Nx Cloud last updated this comment at |
Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
yannbf
approved these changes
Jan 15, 2026
This was referenced Jan 15, 2026
8 tasks
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
closes #33524
What I did
When using
@wc-toolkit/storybook-helpersor similar libraries that generate args with kebab-case attribute names (e.g.,'static-color'), TypeScript would error because our types only allowed camelCase property names.This adds
InferArgsFromComponent<C>which allows both:HTMLElementTagNameMap(type-checked)-(for HTML attributes)Since JavaScript property names cannot contain
-, any string with a dash is definitively an HTML attribute name, making this a safe heuristic.Checklist for Contributors
Testing
The changes in this PR are covered in the following automated tests:
Manual testing
git clone https://github.com/kasperpeulen/spectrum-web-components.gitgit checkout storybook-csf-factories-kebab-case-issuenpx storybook@<CANARY_VERSION> upgradecd 2nd-gen/packages/swc && npx tsc --noEmit'static-color'or'icon-slot'Documentation
MIGRATION.MD
No documentation changes needed - this is a bugfix for type inference.
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal,ci:mergedorci:dailyGH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli-storybook/src/sandbox-templates.tsMake sure this PR contains one of the labels below:
Available labels
bug: Internal changes that fixes incorrect behavior.maintenance: User-facing maintenance tasks.dependencies: Upgrading (sometimes downgrading) dependencies.build: Internal-facing build tooling & test updates. Will not show up in release changelog.cleanup: Minor cleanup style change. Will not show up in release changelog.documentation: Documentation only changes. Will not show up in release changelog.feature request: Introducing a new feature.BREAKING CHANGE: Changes that break compatibility in some way with current major version.other: Changes that don't fit in the above categories.Summary by CodeRabbit
New Features
Tests
✏️ Tip: You can customize this high-level summary in your review settings.