Repository navigation
feat(bulma-ui): make the natural API guess correct — isFullwidth everywhere, Tag isLight, Card.* helper props, forgiving sizes, NumberInput/TagInput aliases - #507
Conversation
…recate divergent casings
|
Warning Review limit reached
Next review available in: 46 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
WalkthroughThe PR standardizes full-width prop compatibility, adds Card compound-component helper props, supports numeric Bulma size values, adds Tag light variants, introduces deprecated form export aliases, and synchronizes component metadata, documentation, examples, stories, and tests. ChangesComponent API consistency
Estimated code review effort: 4 (Complex) | ~45 minutes Mergeability Score: 🔵 Low · up to The PR is mergeable with explicit owner follow-up: some guidance and migration output still describe unsupported or deprecated full-width spellings, and the alias documentation needs to distinguish component exports from props-type aliases. The bounded impact is incorrect consumer code or confusing API usage rather than a runtime failure. Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Preview DeploymentPreview URL: https://ccef9a8b.bestax.pages.dev |
There was a problem hiding this comment.
Pull request overview
Standardizes commonly guessed APIs while preserving deprecated aliases, and updates tests, documentation, skills, and generated MCP metadata.
Changes:
- Adds canonical full-width props, input aliases, Tag light variants, and Card helper props.
- Expands accepted Column and heading size forms.
- Updates tests, stories, skills, API docs, and generated indexes.
Reviewed changes
Copilot reviewed 74 out of 74 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
skills/bestax-theming/references/themeable-components.md |
Updates Tag and heading-size guidance. |
skills/bestax-migrate/references/prop-map.md |
Documents canonical full-width spelling. |
skills/bestax-layout-scaffold/references/layout-components.md |
Documents string sizes and Card helpers. |
skills/bestax-form/SKILL.md |
Documents aliases and full-width convention. |
skills/bestax-form/references/api.md |
Updates Select guidance. |
skills/bestax-custom-component/SKILL.md |
Removes Card helper exception. |
skills/bestax-custom-component/references/component-catalog.md |
Updates compound-component guidance. |
skills/bestax-custom-component/references/api.md |
Documents Card helper support. |
scripts/gen-component-catalog.mjs |
Updates generated catalog preamble. |
docs/docs/guides/library/elements/index.md |
Mentions Tag light variants. |
docs/docs/guides/helpers/visibility.md |
Uses canonical Button prop. |
docs/docs/guides/getting-started/migration/react-bulma-components.md |
Updates migration guidance. |
docs/docs/api/form/taginput.md |
Documents TagInput aliases. |
docs/docs/api/form/select.md |
Documents deprecated Select alias. |
docs/docs/api/form/numberinput.md |
Documents NumberInput aliases. |
docs/docs/api/form/file.md |
Documents deprecated File alias. |
docs/docs/api/elements/title.md |
Updates Title size documentation. |
docs/docs/api/elements/tag.md |
Documents isLight. |
docs/docs/api/elements/table.md |
Documents full-width alias. |
docs/docs/api/elements/subtitle.md |
Updates SubTitle sizes. |
docs/docs/api/elements/linkbutton.md |
Documents canonical full-width prop. |
docs/docs/api/elements/button.md |
Updates full-width examples and props. |
docs/docs/api/components/tabs.md |
Updates full-width examples and aliases. |
docs/docs/api/components/sidebar.md |
Updates Sidebar full-width API. |
docs/docs/api/components/card.md |
Documents Card sub-part helpers. |
docs/docs/api/columns/column.md |
Regenerates Column props. |
bulma-ui/src/form/Taginput.tsx |
Exports deprecated TagInput aliases. |
bulma-ui/src/form/SelectBase.tsx |
Adds Select full-width alias. |
bulma-ui/src/form/Numberinput.tsx |
Exports deprecated NumberInput aliases. |
bulma-ui/src/form/File.tsx |
Adds File full-width alias. |
bulma-ui/src/form/__tests__/Taginput.test.tsx |
Tests TagInput alias. |
bulma-ui/src/form/__tests__/SelectBase.test.tsx |
Tests full-width precedence. |
bulma-ui/src/form/__tests__/Numberinput.test.tsx |
Tests NumberInput alias. |
bulma-ui/src/form/__tests__/File.test.tsx |
Tests File aliases. |
bulma-ui/src/elements/Title.tsx |
Accepts numeric title sizes. |
bulma-ui/src/elements/Tag.tsx |
Adds isLight. |
bulma-ui/src/elements/Tag.stories.tsx |
Adds light Tag story. |
bulma-ui/src/elements/Table.tsx |
Adds Table full-width alias. |
bulma-ui/src/elements/SubTitle.tsx |
Accepts numeric subtitle sizes. |
bulma-ui/src/elements/Button.tsx |
Adds canonical full-width prop. |
bulma-ui/src/elements/Button.stories.tsx |
Updates full-width controls and story. |
bulma-ui/src/elements/__tests__/Title.test.tsx |
Tests numeric and invalid sizes. |
bulma-ui/src/elements/__tests__/Tag.test.tsx |
Tests Tag light variants. |
bulma-ui/src/elements/__tests__/Table.test.tsx |
Tests Table aliases. |
bulma-ui/src/elements/__tests__/SubTitle.test.tsx |
Tests numeric and invalid sizes. |
bulma-ui/src/elements/__tests__/Button.test.tsx |
Tests Button full-width behavior. |
bulma-ui/src/components/Tabs.tsx |
Adds canonical and legacy props. |
bulma-ui/src/components/Sidebar.tsx |
Adds canonical full-width resolution. |
bulma-ui/src/components/Sidebar.stories.tsx |
Updates Sidebar story controls. |
bulma-ui/src/components/Card.tsx |
Adds helpers to Card sub-parts. |
bulma-ui/src/components/Card.stories.tsx |
Demonstrates pinned footer helpers. |
bulma-ui/src/components/__tests__/Tabs.test.tsx |
Tests Tabs alias chain. |
bulma-ui/src/components/__tests__/Sidebar.test.tsx |
Tests Sidebar precedence and width. |
bulma-ui/src/components/__tests__/Card.test.tsx |
Tests Card helper support. |
bulma-ui/src/columns/Column.tsx |
Adds numeric-string sizes. |
bulma-ui/src/columns/__tests__/Column.test.tsx |
Tests string sizes and offsets. |
bulma-ui/src/__tests__/prefix-sweep.test.tsx |
Covers TagInput export. |
bestax-mcp/data/skills.json |
Refreshes skill metadata. |
bestax-mcp/data/components/Title.json |
Regenerates Title metadata. |
bestax-mcp/data/components/Tags.json |
Adds nested Tag light prop. |
bestax-mcp/data/components/Tag.json |
Adds light example and prop. |
bestax-mcp/data/components/Tabs.json |
Updates full-width metadata. |
bestax-mcp/data/components/Table.json |
Adds deprecated alias metadata. |
bestax-mcp/data/components/SubTitle.json |
Regenerates size metadata. |
bestax-mcp/data/components/Sidebar.json |
Updates full-width metadata. |
bestax-mcp/data/components/Select.json |
Adds deprecated alias metadata. |
bestax-mcp/data/components/LinkButton.json |
Updates inherited full-width props. |
bestax-mcp/data/components/File.json |
Adds deprecated alias metadata. |
bestax-mcp/data/components/Columns.json |
Regenerates Column type metadata. |
bestax-mcp/data/components/Column.json |
Regenerates Column type metadata. |
bestax-mcp/data/components/Card.json |
Adds Card sub-part helper metadata. |
bestax-mcp/data/components/Buttons.json |
Updates nested Button metadata. |
bestax-mcp/data/components/Button.json |
Updates canonical Button metadata. |
bestax-mcp/data/catalog.json |
Refreshes component counts. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| RBC uses bare booleans (`loading`, `outlined`, `rounded`, `fullwidth`); bestax prefixes | ||
| with `is`/`has` (`isLoading`, `isOutlined`, `isRounded`, `isFullWidth`). Per-component | ||
| with `is`/`has` (`isLoading`, `isOutlined`, `isRounded`, `isFullwidth`). Per-component |
There was a problem hiding this comment.
Deliberately out of scope: this PR keeps bestax-migrate untouched — its isFullWidth output remains valid because the alias is only deprecated, never removed, so existing migrations do not break. The prop-map line documents the bestax convention (now canonically isFullwidth), and the public migration guide was updated in this PR to note the emitted spelling is a deprecated alias. Re-pointing the codemod mappings/fixtures at the canonical spellings is follow-up work for a bestax-migrate-scoped change.
| Full-width is `isFullwidth` on every component (`Button`, `Select`, `File`, `Table`, `Tabs`, | ||
| `Sidebar`); older spellings (`isFullWidth`, `fullwidth`, `fullWidth`) still work as deprecated | ||
| aliases — write `isFullwidth`. |
There was a problem hiding this comment.
Fixed in 4968688 — the example now uses isFullwidth. The synced copies under create-bestax/templates and bestax-mcp/data regenerate from skills/ at build/pack time.
| */ | ||
| export type BulmaColumnSize = | ||
| | number | ||
| | `${number}` |
There was a problem hiding this comment.
Fixed in 00bfff3 — replaced ${number} with the enumerated 1–12 string literals. That bounds the string form to the documented range and the extractor expands the alias again: the BulmaColumnSize Types footnote is back in column.md and the MCP Column/Columns records carry the full expansion. (The unbounded number arm is pre-existing.)
| export type SubTitleSize = | ||
| (typeof validSubTitleSizes)[number] | 1 | 2 | 3 | 4 | 5 | 6; |
There was a problem hiding this comment.
Fixed in 00bfff3 — SubTitleSize is now a plain literal union (string and numeric forms spelled out), which the union walker expands. The generated subtitle.md props table and the MCP record inline the concrete values again; validSubTitleSizes stays the runtime allowlist.
| export type TitleSize = | ||
| (typeof validTitleSizes)[number] | 1 | 2 | 3 | 4 | 5 | 6; |
There was a problem hiding this comment.
Fixed in 00bfff3 — TitleSize is now a plain literal union (string and numeric forms spelled out), which the union walker expands. The generated title.md props table and the MCP record inline the concrete values again; validTitleSizes stays the runtime allowlist.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 74 out of 74 changed files in this pull request and generated no new comments.
Suppressed comments (2)
skills/bestax-migrate/references/prop-map.md:35
- This canonical-prop guidance conflicts with the migration tool:
mapping.ts:180still rewrites Buttonfullwidthto deprecatedisFullWidth, whilemapping.ts:742leaves Tabs as deprecatedfullwidth(the output fixtures confirm both). Since this PR establishesisFullwidthas canonical everywhere, update those mappings and fixtures so migrations do not immediately generate deprecated API usage; the public migration guide should then describefullwidth→isFullwidthdirectly.
bulma-ui/src/columns/Column.tsx:14 ${number}accepts out-of-range strings such as"13","-1", and"1.5", so callers can type-check while emitting Bulma classes that do not exist despite the documented 1–12 contract. It also causes the API extractor to drop theBulmaColumnSizeexpansion entirely, as shown by the removed type section incolumn.mdand emptytypesarrays in the generated MCP data. Keep the additive numeric-string support, but enumerate the supported string literals (or teach the extractor about a separately range-constrained alias).
| `${number}`
There was a problem hiding this comment.
Deep review — 0 blocking · 2 advisory
| # | Severity | Area | Finding | Location |
|---|---|---|---|---|
| 1 | 🔵 Advisory | API | Card.* sub-parts widen color to the full validColors set (+inherit/current), while the parent Card's color stays restricted to the 6 named colors — a small internal inconsistency (sub-parts are the more capable ones). Documented, backward-compatible. |
bulma-ui/src/components/Card.tsx:228 |
| 2 | 🔵 Advisory | Robustness | Deprecated alias exports NumberInput/TagInput are the same object refs, so their displayName stays Numberinput/Taginput — DevTools shows the canonical name for the alias. Cosmetic and expected for a born-deprecated alias. |
bulma-ui/src/form/Numberinput.tsx:535 |
Overall: Clean, purely additive API-consistency change with strong test coverage. Every full-width component now takes canonical isFullwidth with the divergent spellings kept as @deprecated aliases resolved via canonical ?? legacy (canonical wins, false respected) — the exact pattern used across the file, applied consistently (Button/Table/File/Select two-way, Tabs three-way, Sidebar isFullwidth ?? fullWidth ?? false). Tag isLight lands on both the span and delete-button paths via the shared class list; Title/SubTitle numeric sizes normalize with String(size) and still reject out-of-range values at runtime; BulmaColumnSize gains a numeric-string form and the runtime already interpolates identically for number vs numeric string. The riskiest surface is the Card sub-part rewrite (7 components rerouted through useBulmaClasses), but the pre-existing CardHeader className-on-generated-title quirk and the withSubComponents identities are preserved, and helper props now correctly land in rest instead of leaking to the DOM.
Residual risk: the failure class is "the natural API guess is wrong."
- Other divergent full-width spellings left behind — refuted: grep across
srcshows only Button/Table/File/SelectBase/Tabs/Sidebar carried a full-width prop;Panel'sis-fullwidthis a hardcoded internal button class (not a prop) andSelectforwards...selectPropsstraight toSelectBase, so both casings flow through. - New deprecated aliases leaking to the DOM — refuted:
isFullWidthis now destructured in every component that gained it (Table/File/SelectBase/Tabs), and Card sub-part helper props are consumed byuseBulmaClassesand excluded from the spreadrest. - Generated-artifact drift (
catalog.json/MCP index/API docs) — could not runpnpm genin the sandbox to confirm freshness; the committed propCount deltas are internally consistent (Button 22→23, Tag 8→9, Card 28→49 = 7 sub-parts × 3 helper props) and CI'sgen:catalog:check+gen:mcp:checkgate this on merge.
🏄 Total glassy-water session, dude — five gnarly little API traps smoothed into one mellow additive wave, nothing breaks, every legacy spelling still catches the ride. Aliases carry the deprecation flag, tests are all standing tall. Paddle it in. 🌊
…eeps concrete type values The template-literal string form of BulmaColumnSize and the indexed-access unions on TitleSize/SubTitleSize defeated the props extractor, dropping the concrete expansions from the generated API docs and MCP index. Spelling out the literals restores the expansions and bounds the string sizes to the documented 1-12 / 1-6 ranges.
Preview DeploymentPreview URL: https://d34229a3.bestax.pages.dev |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 75 out of 75 changed files in this pull request and generated no new comments.
Suppressed comments (4)
bulma-ui/src/elements/Title.tsx:14
- The numeric
sizeform is added to the public API, butTitle.stories.tsxstill offers and demonstrates only string sizes. Add a numeric-size story or update an existing story tosize={3}so Storybook documents this new prop form.
bulma-ui/src/elements/SubTitle.tsx:14 - The numeric
sizeform is added to the public API, butSubTitle.stories.tsxstill offers and demonstrates only string sizes. Add a numeric-size story or update an existing story tosize={3}so Storybook documents this new prop form.
bulma-ui/src/columns/Column.tsx:18 - The numeric-string column form is not represented in
Column.stories.tsx; its numeric examples still use numbers and its string examples are named fractions. Add asize="7"oroffset="3"story example so Storybook documents the newly accepted API form.
| '1'
| '2'
| '3'
| '4'
| '5'
bulma-ui/src/components/Tabs.tsx:39
- The new canonical prop is not reflected in Storybook:
bulma-ui/src/components/Tabs.stories.tsx:342still renders<Tabs fullwidth>, so the component’s story continues teaching the deprecated spelling. Update that story (and its controls, if exposed) to useisFullwidth, as was done for Button and Sidebar.
isFullwidth?: boolean;
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/docs/api/form/numberinput.md`:
- Around line 35-36: Update docs/docs/api/form/numberinput.md lines 35-36 to
distinguish the component alias NumberInput, which aliases Numberinput, from the
deprecated props type alias NumberInputProps; make the same wording correction
in docs/docs/api/form/taginput.md lines 35-36 for TagInput, Taginput, and
deprecated TagInputProps.
In `@docs/docs/guides/getting-started/migration/react-bulma-components.md`:
- Around line 49-50: Update the Button.fullwidth mapping and its fixture to emit
the canonical isFullwidth prop instead of deprecated isFullWidth, and revise the
migration guide text accordingly while preserving the other prop mappings.
In `@skills/bestax-form/SKILL.md`:
- Around line 122-124: Replace the universal full-width prop statement in the
skill documentation with a component-specific alias matrix covering Button,
LinkButton, Select, File, Table, Tabs, and Sidebar. Document only the aliases
each component actually supports, explicitly include LinkButton, and identify
isFullwidth as the preferred spelling only where valid so agents do not copy
unsupported TypeScript props.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: fa1f1ecf-413a-44f2-9555-81ebf6100dd6
📒 Files selected for processing (75)
bestax-mcp/data/catalog.jsonbestax-mcp/data/components/Button.jsonbestax-mcp/data/components/Buttons.jsonbestax-mcp/data/components/Card.jsonbestax-mcp/data/components/Column.jsonbestax-mcp/data/components/Columns.jsonbestax-mcp/data/components/File.jsonbestax-mcp/data/components/LinkButton.jsonbestax-mcp/data/components/Select.jsonbestax-mcp/data/components/Sidebar.jsonbestax-mcp/data/components/SubTitle.jsonbestax-mcp/data/components/Table.jsonbestax-mcp/data/components/Tabs.jsonbestax-mcp/data/components/Tag.jsonbestax-mcp/data/components/Tags.jsonbestax-mcp/data/components/Title.jsonbestax-mcp/data/skills.jsonbulma-ui/src/__tests__/prefix-sweep.test.tsxbulma-ui/src/columns/Column.tsxbulma-ui/src/columns/__tests__/Column.test.tsxbulma-ui/src/components/Card.stories.tsxbulma-ui/src/components/Card.tsxbulma-ui/src/components/Sidebar.stories.tsxbulma-ui/src/components/Sidebar.tsxbulma-ui/src/components/Tabs.tsxbulma-ui/src/components/__tests__/Card.test.tsxbulma-ui/src/components/__tests__/Sidebar.test.tsxbulma-ui/src/components/__tests__/Tabs.test.tsxbulma-ui/src/elements/Button.stories.tsxbulma-ui/src/elements/Button.tsxbulma-ui/src/elements/SubTitle.tsxbulma-ui/src/elements/Table.tsxbulma-ui/src/elements/Tag.stories.tsxbulma-ui/src/elements/Tag.tsxbulma-ui/src/elements/Title.tsxbulma-ui/src/elements/__tests__/Button.test.tsxbulma-ui/src/elements/__tests__/SubTitle.test.tsxbulma-ui/src/elements/__tests__/Table.test.tsxbulma-ui/src/elements/__tests__/Tag.test.tsxbulma-ui/src/elements/__tests__/Title.test.tsxbulma-ui/src/form/File.tsxbulma-ui/src/form/Numberinput.tsxbulma-ui/src/form/SelectBase.tsxbulma-ui/src/form/Taginput.tsxbulma-ui/src/form/__tests__/File.test.tsxbulma-ui/src/form/__tests__/Numberinput.test.tsxbulma-ui/src/form/__tests__/SelectBase.test.tsxbulma-ui/src/form/__tests__/Taginput.test.tsxdocs/docs/api/columns/column.mddocs/docs/api/components/card.mddocs/docs/api/components/sidebar.mddocs/docs/api/components/tabs.mddocs/docs/api/elements/button.mddocs/docs/api/elements/linkbutton.mddocs/docs/api/elements/subtitle.mddocs/docs/api/elements/table.mddocs/docs/api/elements/tag.mddocs/docs/api/elements/title.mddocs/docs/api/form/file.mddocs/docs/api/form/numberinput.mddocs/docs/api/form/select.mddocs/docs/api/form/taginput.mddocs/docs/guides/getting-started/migration/react-bulma-components.mddocs/docs/guides/helpers/visibility.mddocs/docs/guides/library/elements/index.mdscripts/gen-component-catalog.mjsskills/bestax-custom-component/SKILL.mdskills/bestax-custom-component/references/api.mdskills/bestax-custom-component/references/component-catalog.mdskills/bestax-form/SKILL.mdskills/bestax-form/references/api.mdskills/bestax-layout-scaffold/examples/centered.tsxskills/bestax-layout-scaffold/references/layout-components.mdskills/bestax-migrate/references/prop-map.mdskills/bestax-theming/references/themeable-components.md
Preview DeploymentPreview URL: https://3e743522.bestax.pages.dev |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 75 out of 75 changed files in this pull request and generated no new comments.
Suppressed comments (7)
bulma-ui/src/components/Tabs.tsx:43
- The new canonical Tabs prop is not reflected in Storybook:
Tabs.stories.tsx:342still demonstrates only deprecatedfullwidth, and its argTypes expose noisFullwidthcontrol. Update the story to teach and expose the canonical prop, as required for changed components bybulma-ui/CLAUDE.md:20-25.
isFullwidth?: boolean;
/** Tabs expand to fill the horizontal space. @deprecated Use `isFullwidth` instead — `isFullwidth` wins if both are set. */
isFullWidth?: boolean;
/** Tabs expand to fill the horizontal space. @deprecated Use `isFullwidth` instead — `isFullwidth` wins if both are set. */
fullwidth?: boolean;
bulma-ui/src/elements/Button.tsx:43
- Because
LinkButtonPropsextendsButtonProps, this addsisFullwidthto LinkButton too, butLinkButton.stories.tsx:60-63still exposes only deprecatedisFullWidth. Update that story to make the new canonical API discoverable; changed components must keep stories aligned (bulma-ui/CLAUDE.md:20-25).
isFullwidth?: boolean;
/** Makes the button full-width. @deprecated Use `isFullwidth` instead — `isFullwidth` wins if both are set. */
isFullWidth?: boolean;
bulma-ui/src/elements/Title.tsx:14
- Storybook still limits Title's size control and examples to string values (
Title.stories.tsx:12-15,41-52), so the newly supported numeric form is absent from the required story artifact. Add a numeric option/example to keep the story aligned with this prop change (bulma-ui/CLAUDE.md:20-25).
bulma-ui/src/elements/SubTitle.tsx:14 - Storybook still limits SubTitle's size control and examples to string values (
SubTitle.stories.tsx:12-15,40-51), so the newly supported numeric form is absent from the required story artifact. Add a numeric option/example to keep the story aligned with this prop change (bulma-ui/CLAUDE.md:20-25).
skills/bestax-layout-scaffold/examples/centered.tsx:47 - The checked-in public skill showcase still uses
<Button ... isFullWidth>atdocs/docs/skills/layout-scaffold.mdx:270. Updating only this source example leaves the documentation site teaching the deprecated spelling; update the docs showcase toisFullwidthas well.
bulma-ui/src/columns/Column.tsx:18 Column.stories.tsxhas no numeric-string size or offset example, so this newly accepted form is missing from the required story artifact. Add an example such assize="7"/offset="3"to keep Storybook aligned with the public type change (bulma-ui/CLAUDE.md:20-25).
| '1'
| '2'
| '3'
| '4'
| '5'
skills/bestax-form/SKILL.md:125
- This shipped skill omits
SelectBaseeven though this PR adds the canonical prop there, and “historically existed” is inaccurate becauseisFullWidthis newly added to several components in this PR. ListSelectBaseand describe the aliases by where they are accepted rather than as historical spellings.
|
🎉 This PR is included in version 5.10.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 4.1.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 2.0.1 🎉 The release is available on: Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 1.0.1 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Five additive changes that make the natural API guess correct, straight from the cold-start eval evidence. Every existing prop spelling keeps working; nothing here is breaking.
The five items
isFullwidtheverywhere — Button, Select/SelectBase, File, Table, Tabs, and Sidebar all accept the canonicalisFullwidth; the divergent spellings (isFullWidth,fullwidth,fullWidth) stay as deprecated aliases, with the canonical prop winning when both are set (isFullwidth ?? legacy, same pattern as Columns'gap/gapSize). Eval: the casing lottery cost tsc rounds in nearly every run that used more than one full-width component.TaggainsisLight— the light color variant, on both the span and delete-button render paths. Eval: agents inventedisLighton Tag in 2/10 runs because Button and Notification already have it.Card.*sub-parts accept Bulma helper props — all seven (Header, Header.Title, Header.Icon, Image, Content, Footer, FooterItem) now route throughuseBulmaClasseslike the Media sub-parts, includingcolor/bgColor/textColor. CardHeader's className-on-generated-title quirk and thewithSubComponentsidentities are preserved. The catalog generator preamble movesCard.*to the "take helper props" list. Eval: flex-pinning a Card footer forced Box swaps becauseCard.Content flexGrowdidn't exist.BulmaColumnSizeaccepts numeric strings (size="7"≡size={7}), andTitle/SubTitleaccept numeric sizes (size={3}≡size="3", still deriving<h3>); invalid values (e.g.7on Title) are still rejected. Eval: the Column/Title size type mismatch cost rounds in both directions — numbers where strings were required and vice versa.NumberInput/TagInputaliases — born-deprecated alias exports (NumberInput,NumberInputProps,TagInput,TagInputProps) for the camel-case spellings agents guess. Eval:import { NumberInput }failed on every run that used it.Docs, stories, and skills are updated in the same PR: the form skill now teaches "full-width is
isFullwidthon every component", the custom-component and layout-scaffold skills drop Card from the no-helper-props exception lists, the theming reference gains TagisLightand the string-or-number Title sizes, and the generated artifacts (API docs props tables, skill catalog, MCP index) are regenerated per commit.Testing
--bulma-sidebar-widthCSS variable both ways), TagisLighton both render paths, all seven Card sub-parts (helper prop, color-vs-textColor precedence, DOM spread, prefix pair, header quirk), Column string sizes/offsets, Title/SubTitle numeric + out-of-range rejection (string and number), alias identity + render tests, and aTagInputentry in the prefix sweep.pnpm --filter @allxsmith/bestax-bulma test:coverage: 99.61% stmts / 99.12% branches / 99.75% funcs / 99.82% lines — the 99% gate holds.pnpm gen && git diff --exit-codeclean;pnpm check:conformancegreen; fullpnpm allgreen. Note: onepnpm allinvocation tripped a pre-existing race in bestax-mcp'ssync-skillsstep (build/test/test:coverage each copydata/skills/and turbo runs them concurrently —rmdircollision); the constituent turbo tasks all pass run sequentially and a rerun passes. Worth a separate issue.May lightly conflict with the #369 PR on
components/Card.tsx(this PR touches only the sub-part region, #369 the parent) and on regenerated artifacts — whichever merges second rebases and rerunspnpm gen.Closes #370
Summary by CodeRabbit
New Features
isLightoption.Bug Fixes
isFullwidthacross components, while preserving deprecated aliases with clear precedence rules.Documentation