Repository navigation
feat(bulma-ui): scheme-aware bgColor backgrounds (scheme-main-bis/-ter bands without custom CSS) - #508
Conversation
WalkthroughThe PR adds six Bulma scheme colors as inline CSS-variable backgrounds. It updates shared helpers, supported surface components, themes, tests, Storybook examples, API documentation, skills, and generated catalog metadata. ChangesScheme background implementation
Estimated code review effort: 4 (Complex) | ~45 minutes Mergeability Score: 🔵 Low · up to The new scheme-aware background behavior is mergeable, but several documentation and API-reference details remain inconsistent with the shipped behavior, which could mislead users about supported theme variables, alternating bands, or custom-component prop handling. Merge with explicit owner follow-up to correct these bounded documentation issues. Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 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://e86e1fed.bestax.pages.dev |
There was a problem hiding this comment.
Pull request overview
Adds scheme-aware, dark-mode-adaptive backgrounds to six Bulma surface components, addressing #369.
Changes:
- Adds scheme color constants, style hooks, merging utilities, and Theme variables.
- Updates components with tests and a Section Storybook example.
- Refreshes documentation, skills, and generated MCP data.
Reviewed changes
Copilot reviewed 49 out of 50 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
skills/bestax-theming/SKILL.md |
Teaches scheme-aware bands. |
skills/bestax-theming/references/css-variables.md |
Documents scheme variables. |
skills/bestax-layout-scaffold/SKILL.md |
Replaces band CSS with props. |
skills/bestax-layout-scaffold/references/archetypes.md |
Updates band guidance. |
skills/bestax-custom-component/references/api.md |
Documents new helper APIs. |
docs/docs/guides/helpers/color.md |
Adds scheme background guide. |
docs/docs/api/layout/section.md |
Documents Section support. |
docs/docs/api/layout/hero.md |
Documents Hero support. |
docs/docs/api/layout/footer.md |
Documents Footer support. |
docs/docs/api/layout/container.md |
Documents Container support. |
docs/docs/api/helpers/valid-values.md |
Adds validSchemeColors. |
docs/docs/api/helpers/usebulmaclasses.md |
Documents helper styles. |
docs/docs/api/helpers/theme.md |
Documents Theme overrides. |
docs/docs/api/elements/box.md |
Documents Box support. |
docs/docs/api/components/card.md |
Documents Card support. |
bulma-ui/src/layout/Section.tsx |
Implements scheme backgrounds. |
bulma-ui/src/layout/Section.stories.tsx |
Adds scheme-band story. |
bulma-ui/src/layout/Hero.tsx |
Implements Hero scheme backgrounds. |
bulma-ui/src/layout/Footer.tsx |
Implements Footer scheme backgrounds. |
bulma-ui/src/layout/Container.tsx |
Implements Container scheme backgrounds. |
bulma-ui/src/layout/__tests__/Section.test.tsx |
Tests Section behavior. |
bulma-ui/src/layout/__tests__/Hero.test.tsx |
Tests Hero behavior. |
bulma-ui/src/layout/__tests__/Footer.test.tsx |
Tests Footer behavior. |
bulma-ui/src/layout/__tests__/Container.test.tsx |
Tests Container behavior. |
bulma-ui/src/index.ts |
Exports style merger. |
bulma-ui/src/helpers/useColorClasses.tsx |
Adds scheme style generation. |
bulma-ui/src/helpers/useBulmaClasses.tsx |
Returns helper styles. |
bulma-ui/src/helpers/useBulmaClasses.stories.tsx |
Demonstrates scheme colors. |
bulma-ui/src/helpers/Theme.tsx |
Allows scheme variables. |
bulma-ui/src/helpers/mergeBulmaStyles.ts |
Adds style merge utility. |
bulma-ui/src/helpers/bulmaClassHelpers.ts |
Defines scheme constants. |
bulma-ui/src/helpers/__tests__/useColorClasses.test.tsx |
Tests color hooks. |
bulma-ui/src/helpers/__tests__/useBulmaClasses.test.tsx |
Tests aggregate styles. |
bulma-ui/src/helpers/__tests__/Theme.test.tsx |
Tests scheme variables. |
bulma-ui/src/helpers/__tests__/mergeBulmaStyles.test.ts |
Tests style merging. |
bulma-ui/src/elements/Box.tsx |
Implements Box support. |
bulma-ui/src/elements/__tests__/Box.test.tsx |
Tests Box support. |
bulma-ui/src/components/Card.tsx |
Implements Card support. |
bulma-ui/src/components/__tests__/Card.test.tsx |
Tests Card support. |
bestax-mcp/data/skills.json |
Refreshes skill metadata. |
bestax-mcp/data/components/Valid value constants.json |
Regenerates constants data. |
bestax-mcp/data/components/useBulmaClasses.json |
Regenerates helper data. |
bestax-mcp/data/components/Theme.json |
Regenerates Theme data. |
bestax-mcp/data/components/Section.json |
Regenerates Section data. |
bestax-mcp/data/components/Hero.json |
Regenerates Hero data. |
bestax-mcp/data/components/Footer.json |
Regenerates Footer data. |
bestax-mcp/data/components/Container.json |
Regenerates Container data. |
bestax-mcp/data/components/Card.json |
Regenerates Card data. |
bestax-mcp/data/components/Box.json |
Regenerates Box data. |
bestax-mcp/data/catalog.json |
Updates generated example counts. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| bgColor?: | ||
| | (typeof validColors)[number] | ||
| | (typeof validSchemeColors)[number] | ||
| | 'inherit' | ||
| | 'current'; |
There was a problem hiding this comment.
Fixed in 1adc99a — Hero.stories.tsx now has a bgColor argType (full union incl. the scheme values) and a SchemeBackground story covering the parent plus Head/Body/Foot.
| bgColor?: | ||
| | (typeof validColors)[number] | ||
| | (typeof validSchemeColors)[number] | ||
| | 'inherit' | ||
| | 'current'; |
There was a problem hiding this comment.
Fixed in 1adc99a — Footer.stories.tsx now has a bgColor argType with the scheme values and a SchemeBackground story.
| bgColor?: | ||
| | (typeof validColors)[number] | ||
| | (typeof validSchemeColors)[number] | ||
| | 'inherit' | ||
| | 'current'; |
There was a problem hiding this comment.
Fixed in 1adc99a — Container.stories.tsx now has a bgColor argType with the scheme values and a SchemeBackground story.
| bgColor?: | ||
| | (typeof validColors)[number] | ||
| | (typeof validSchemeColors)[number] | ||
| | 'inherit' | ||
| | 'current'; |
There was a problem hiding this comment.
Fixed in 1adc99a — the Box bgColor control now lists the six scheme values, the description covers the inline-style path, and a SchemeBackground story demonstrates it.
| bgColor?: | ||
| | (typeof validColors)[number] | ||
| | (typeof validSchemeColors)[number] | ||
| | 'inherit' | ||
| | 'current'; |
There was a problem hiding this comment.
Fixed in 1adc99a — the Card bgColor control now lists the six scheme values, the description covers the inline-style path, and a SchemeBackground story demonstrates it.
| ### Scheme Backgrounds and `bulmaHelperStyles` | ||
|
|
||
| The hook returns a third member, `bulmaHelperStyles`, alongside `bulmaHelperClasses` and `rest`. It is `undefined` for every input except a scheme `backgroundColor` (`scheme-main`, `scheme-main-bis`, `scheme-main-ter`, `scheme-invert`, `scheme-invert-bis`, `scheme-invert-ter`): Bulma ships no `has-background-scheme-*` classes, so those values emit no class and instead surface here as a dark-mode-safe inline style tracking Bulma's scheme CSS variables. |
There was a problem hiding this comment.
Fixed in 984cdfb — the API block now destructures and documents bulmaHelperStyles, the mini-hook table lists seven hooks including useColorStyles, the backgroundColor row and the TypeScript appendix show the widened scheme union, and the MCP copy is regenerated.
| | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | `validColors` | `'primary'`, `'link'`, `'info'`, `'success'`, `'warning'`, `'danger'`, `'black'` … `'white'`, `'light'`, `'dark'` (17 values) | `color`, `backgroundColor` helper props. Component `color` modifier unions are narrower and component-specific; some `validColors` members ship no `is-<color>` CSS (deprecated, warned in dev). See each component's Props table. Scheme-aware components extend their `bgColor` unions with `validSchemeColors` (below). | | ||
| | `validColorShades` | `'00'`, `'05'` … `'95'`, `'invert'`, `'light'`, `'dark'`, `'soft'`, `'bold'`, `'on-scheme'` | `colorShade`, `backgroundColorShade` | | ||
| | `validSchemeColors` | `'scheme-main'`, `'scheme-main-bis'`, `'scheme-main-ter'`, `'scheme-invert'`, `'scheme-invert-bis'`, `'scheme-invert-ter'` | Scheme-aware `bgColor`/`backgroundColor` values. Emit no class — components render them as a dark-mode-safe inline `background-color: var(--bulma-<value>)` style (Bulma ships no `has-background-scheme-*` helpers). | |
There was a problem hiding this comment.
Fixed in 984cdfb — the overview now states that values produce a helper class for every list except validSchemeColors, whose values produce the bulmaHelperStyles inline style instead; MCP copy regenerated.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 49 out of 50 changed files in this pull request and generated 1 comment.
Suppressed comments (1)
docs/docs/api/helpers/usebulmaclasses.md:274
- The newly documented return member is still omitted from this page's authoritative API block: lines 779–787 destructure and enumerate only
bulmaHelperClassesandrest. The composable-hooks table also omits the now-publicuseColorStyles. Update those sections (and regenerate the MCP copy) so the API reference does not contradict this section or hide the style application required for scheme values.
| if ( | ||
| backgroundColor && | ||
| (validSchemeColors as readonly string[]).includes(backgroundColor) | ||
| ) { | ||
| return { backgroundColor: `var(--bulma-${backgroundColor})` }; |
There was a problem hiding this comment.
Documented rather than changed, deliberately. Auto-emitting a foreground would be a regression: textColor renders as a class and an inline color always beats a class, so an automatic inline foreground would silently override any textColor the caller sets. Omitting the invert trio would drop API specified in #369. Background helpers never setting a foreground is the existing contract — bgColor="black"/"dark"/"white" have exactly the same contrast trap today. 1adc99a adds the pairing caveat to every widened bgColor TSDoc and to useColorStyles; 984cdfb adds a warning admonition with concrete pairings (color: var(--bulma-scheme-main) via a named class for dual-mode designs, explicit textColor for pinned single-mode) to the color guide.
There was a problem hiding this comment.
Deep review — 0 blocking · 2 advisory
| No. | Severity | Area | Finding | Location |
|---|---|---|---|---|
| 1 | 🔵 Advisory | Accessibility | The scheme-invert* background values fill a surface with the opposite scheme but leave default (non-inverted) text, so a band built with bgColor=scheme-invert and no matching textColor renders low-contrast text. Consistent with existing fixed bgColor behavior, but the new docs table lists the invert trio with no contrast caveat. |
docs/docs/guides/helpers/color.md:150 |
| 2 | 🔵 Advisory | Robustness | The type-gated rollout guarantee holds only for TypeScript consumers. A plain-JS caller can pass bgColor=scheme-main-bis to a non-tranche component (or a scheme value to backgroundColor anywhere), where it produces neither a class nor an inline style, a silent no-op rather than a compile error. Inherent to a type-only gate; same shape as any invalid helper value. |
bulma-ui/src/helpers/useColorClasses.tsx:120 |
Overall: The change is sound and well-scoped. Scheme values are correctly diverted off the class path (useColorClasses early-returns because the value is not in validColors) and onto a memoized useColorStyles inline style that references real Bulma v1 tokens (all six --bulma-scheme-main / -main-bis / -main-ter / -invert / -invert-bis / -invert-ter confirmed present in the shipped bulma.css). All six surface components apply the merged style via mergeBulmaStyles(bulmaHelperStyles, style); style is destructured out before the rest-spread so it cannot double-apply via rest, and mergeBulmaStyles(undefined, style) collapses to byte-identical DOM for the non-scheme case (user style wins on conflict; both-absent yields undefined, no stray attribute). The additive bulmaHelperStyles return member and the widened T extends object bound are backward-compatible for existing destructurers. Tests, docs, skills, and generated MCP/API artifacts are all updated in-PR; the relevant unit tests pass locally. The riskiest part for a human to eyeball is the invert-trio contrast trap (advisory 1); everything else is mechanical and covered.
Residual risk:
- Scheme value silently unstyled on a tranche component: refuted. Every one of the six (Section, Hero + Head/Body/Foot, Container, Footer, Box, Card parent) both reads
bulmaHelperStylesfromuseBulmaClassesand renders it viamergeBulmaStyles; verified by reading each render path and by the per-component exact-inline-style tests passing. - Scheme value leaking into a
has-background-*class: refuted.addColorClassguards on thevalidColorsmembership check and returns early for scheme names; the addeduseColorClassesno-class tests (with/without prefix, with/without shade) pass. backgroundColorShadecorrupting scheme output: refuted. Shade is dropped in the class path (scheme value fails thevalidColorscheck) and never read byuseColorStyles; documented and unit-tested.- DOM regression for components that gained explicit
stylehandling: refuted.mergeBulmaStylesreturnsundefinedwhen both inputs are absent and a shallow spread ofstyleotherwise, serializing identically to the prior rest-spread path.
🏄 Clean sets rolling in on this one, dude: scheme bands glide right onto the surface with zero gnarly custom CSS, dark mode flips without wiping out, and the whole lineup of tests holds the wave. Only thing to watch is paddling out on
scheme-invertwithout inverted text (squint city). Otherwise, totally good to go.
|
Re the deep review advisories:
|
Preview DeploymentPreview URL: https://d4b72985.bestax.pages.dev |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 54 out of 55 changed files in this pull request and generated no new comments.
Suppressed comments (2)
bulma-ui/src/helpers/useBulmaClasses.stories.tsx:294
- This story renders an inverted scheme background with the default foreground, which the new color guide explicitly identifies as low-contrast (
docs/docs/guides/helpers/color.md:162-163). Pair it with the adaptive--bulma-scheme-mainforeground so the example remains readable in both modes.
<Box bgColor="scheme-invert">Scheme Invert (dark-mode adaptive)</Box>
docs/docs/api/helpers/usebulmaclasses.md:304
- This recommended pattern applies
stylebefore...rest. BecauseuseBulmaClassestreats a consumer'sstyleas an unrecognized prop and leaves it inrest, spreadingrestafterward replaces the merged object and drops the scheme background rather than merging conflicts. Destructurestylefromrest, or spread the remaining props first and applymergeBulmaStyles(bulmaHelperStyles, style)last; then regenerate the MCP artifact that embeds this example.
|
@coderabbitai review |
|
984cdfb to
b574450
Compare
Preview DeploymentPreview URL: https://3b6b0f86.bestax.pages.dev |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 54 out of 55 changed files in this pull request and generated no new comments.
Suppressed comments (1)
bulma-ui/src/helpers/useBulmaClasses.stories.tsx:294
- This visual example uses the default foreground on
scheme-invert, which the new color guide explicitly identifies as low-contrast. Pair the inverted surface with the corresponding scheme foreground so the Storybook example remains readable in both light and dark modes.
<Box bgColor="scheme-invert">Scheme Invert (dark-mode adaptive)</Box>
|
Addressed Copilot's two suppressed notes in the latest commit: the rendered scheme-invert swatch is now mode-pinned via Bulma's scoped |
Preview DeploymentPreview URL: https://aadd033c.bestax.pages.dev |
…ntrast TSDoc caveat
…scheme-invert contrast
f0ec9ee to
dba2f92
Compare
Preview DeploymentPreview URL: https://8840cf4e.bestax.pages.dev |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 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/helpers/valid-values.md`:
- Line 41: Update validDisplays in docs/docs/api/helpers/valid-values.md:41-41
to include 'none', then regenerate bestax-mcp/data/components/Valid value
constants.json:13-13 so both documentation artifacts list the same complete
display values.
In `@docs/docs/api/layout/section.md`:
- Around line 84-104: Use consistent “alternating” behavior in both
documentation examples: docs/docs/api/layout/section.md lines 84-104 and
docs/docs/guides/helpers/color.md lines 166-187. Either revise each heading and
description to describe successive scheme bands, or update both JSX examples to
repeat a background value on every other Section; apply the same choice and
wording to both sites.
In `@skills/bestax-custom-component/references/api.md`:
- Around line 15-30: Update the example comment around useBulmaClasses to
qualify that rest is DOM-safe only after destructuring component-specific props
and style from the input; custom members of generic T remain in rest. Instruct
callers to remove those props before spreading rest onto the root element and to
spread the merged helper/user styles afterward so user styles retain precedence.
In `@skills/bestax-theming/references/css-variables.md`:
- Around line 84-90: Update the CSS variables reference table near the scheme
background row to document all six scheme variables: retain the main trio and
add --bulma-scheme-invert, --bulma-scheme-invert-bis, and
--bulma-scheme-invert-ter, describing their invert background roles and
Theme.bulmaVars/bgColor support consistently with the existing entries.
🪄 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: 045ffca1-aa82-48b4-8919-fbce91dd7795
📒 Files selected for processing (55)
bestax-mcp/data/catalog.jsonbestax-mcp/data/components/Box.jsonbestax-mcp/data/components/Card.jsonbestax-mcp/data/components/Container.jsonbestax-mcp/data/components/Footer.jsonbestax-mcp/data/components/Hero.jsonbestax-mcp/data/components/Section.jsonbestax-mcp/data/components/Theme.jsonbestax-mcp/data/components/Valid value constants.jsonbestax-mcp/data/components/useBulmaClasses.jsonbestax-mcp/data/skills.jsonbulma-ui/src/components/Card.stories.tsxbulma-ui/src/components/Card.tsxbulma-ui/src/components/__tests__/Card.test.tsxbulma-ui/src/elements/Box.stories.tsxbulma-ui/src/elements/Box.tsxbulma-ui/src/elements/__tests__/Box.test.tsxbulma-ui/src/helpers/Theme.tsxbulma-ui/src/helpers/__tests__/Theme.test.tsxbulma-ui/src/helpers/__tests__/mergeBulmaStyles.test.tsbulma-ui/src/helpers/__tests__/useBulmaClasses.test.tsxbulma-ui/src/helpers/__tests__/useColorClasses.test.tsxbulma-ui/src/helpers/bulmaClassHelpers.tsbulma-ui/src/helpers/mergeBulmaStyles.tsbulma-ui/src/helpers/useBulmaClasses.stories.tsxbulma-ui/src/helpers/useBulmaClasses.tsxbulma-ui/src/helpers/useColorClasses.tsxbulma-ui/src/index.tsbulma-ui/src/layout/Container.stories.tsxbulma-ui/src/layout/Container.tsxbulma-ui/src/layout/Footer.stories.tsxbulma-ui/src/layout/Footer.tsxbulma-ui/src/layout/Hero.stories.tsxbulma-ui/src/layout/Hero.tsxbulma-ui/src/layout/Section.stories.tsxbulma-ui/src/layout/Section.tsxbulma-ui/src/layout/__tests__/Container.test.tsxbulma-ui/src/layout/__tests__/Footer.test.tsxbulma-ui/src/layout/__tests__/Hero.test.tsxbulma-ui/src/layout/__tests__/Section.test.tsxdocs/docs/api/components/card.mddocs/docs/api/elements/box.mddocs/docs/api/helpers/theme.mddocs/docs/api/helpers/usebulmaclasses.mddocs/docs/api/helpers/valid-values.mddocs/docs/api/layout/container.mddocs/docs/api/layout/footer.mddocs/docs/api/layout/hero.mddocs/docs/api/layout/section.mddocs/docs/guides/helpers/color.mdskills/bestax-custom-component/references/api.mdskills/bestax-layout-scaffold/SKILL.mdskills/bestax-layout-scaffold/references/archetypes.mdskills/bestax-theming/SKILL.mdskills/bestax-theming/references/css-variables.md
|
🎉 This PR is included in version 5.11.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 4.1.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 📦🚀 |
What
bgColorgains six scheme-aware values —scheme-main,scheme-main-bis,scheme-main-ter,scheme-invert,scheme-invert-bis,scheme-invert-ter— on six surface components:Section,Hero(incl.Hero.Head/Hero.Body/Hero.Foot),Container,Footer,Box, andCard(parent only). Alternating page bands become a prop:Why an inline style, not a class
This closes the last gap the cold-start evals could not close without sanctioned custom CSS: dark-safe alternating section bands. Bulma ships no
has-background-scheme-*helper classes, and stock-Bulma consumers (bulma.min.css via npm/CDN, the bestax-no-helpers flavor) never load bestax-shipped CSS — so a class-based route was non-viable. Scheme values therefore emit no class; the component rendersstyle={{ backgroundColor: 'var(--bulma-scheme-main-bis)' }}, which tracks Bulma's scheme variables and flips correctly in dark mode.How
validSchemeColorstuple (new public constant, re-exported throughuseBulmaClasses).useColorStyles→{ backgroundColor: 'var(--bulma-<value>)' }for scheme values,undefinedotherwise (never{}— unaffected components produce byte-identical DOM).useBulmaClassesreturn gains an additive optional memberbulmaHelperStyles; existing destructurers are unaffected. Its generic bound loosens fromRecord<string, unknown>toobject(strictly more permissive) so the existingas BulmaClassesProps & typeof propscall sites keep compiling against the widened input type.mergeBulmaStyles(helperStyles, style)helper — userstylewins on conflict;undefinedwhen both are absent (no straystyle=""attributes).bgColorunion with(typeof validSchemeColors)[number]. Components that haven't wiredbulmaHelperStylesonto their root keep the narrow union, so a scheme value there is a compile error, never a silent no-op. The publicBulmaColorPropsunion stays narrow.Theme bulmaVarsnow accepts--bulma-scheme-main/-bis/-terand the-inverttrio, so one Theme re-tints every band at once.bestax-layout-scaffolddrops.section-altfrom the sanctioned custom-CSS budget (now two rules, ≤10 lines) and teaches the prop form;bestax-themingteaches bands as first-class plus thebulmaVarsoverride; the custom-component API reference documentsvalidSchemeColors,bulmaHelperStyles, andmergeBulmaStyles.valid-valuesrow,useBulmaClasses/ThemeAPI notes, Section usage example; generated API/MCP artifacts regenerated viapnpm gen.Testing
useColorStyles(all six values, non-scheme/undefined inputs, shade ignored, memoization),useColorClassesscheme no-class cases (± prefix, ± shade),useBulmaClassesbulmaHelperStylespopulation with class string/restuntouched,mergeBulmaStylesall four input combinations with user-wins precedence.has-background-substring + exactvar()inline style, classPrefix variant, user-style-wins, and a no-style-attribute regression for non-scheme values.Theme: scheme vars viabulmaVarson both the scoped andisRootpaths.pnpm genproduces no diff;pnpm check:conformanceclean;pnpm allgreen. Note: a cold concurrentpnpm allcan trip a pre-existing race in bestax-mcp'ssync-skillsstep (build/test/test:coverageeach rewritedata/skills/and turbo runs them in parallel —rmdir/mkdircollisions); the constituent turbo tasks all pass when run sequentially and the full gate then passes. Untouched by this PR.Merge coordination
This branch may lightly conflict with the #370 PR on
components/Card.tsxand regenerated artifacts (docs API pages,bestax-mcp/data). Whichever merges second rebases and rerunspnpm gen.Closes #369
Summary by CodeRabbit
New Features
scheme-*background color support to cards, containers, boxes, footers, heroes, and sections.Documentation