feat: align the prop vocabulary and docs format with Kumo#242
Open
sriramveeraghanta wants to merge 1 commit into
Open
feat: align the prop vocabulary and docs format with Kumo#242sriramveeraghanta wants to merge 1 commit into
sriramveeraghanta wants to merge 1 commit into
Conversation
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
propel-docs | fb6e7c5 | Jul 26 2026, 11:17 AM |
Extend the button-family rework (#239) and the menu/context-menu API standardization (#241) across every component, adopting Kumo's prop vocabulary and its component-page format. Props: rename magnitude to size library-wide (sm/md/lg/xl spellings unchanged) and fold tone into variant with each union kept intact, so Badge carries variant="danger" and variant="crimson" on one axis exactly as Kumo's Badge does. Also emphasis to variant (Pill), appearance to variant (Tabs), presentation to appearance (NavigationMenuLink), and mode to variant (Table, whose root cva is corrected to tableVariants per rule 8). density stays: CheckboxGroupField and RadioGroupField already spend size on the label text scale, so option spacing needs its own axis and Kumo has no density vocabulary to borrow. sizing, fillType, surface, elevation, visibility, placement and layout stay for the same reason. size collides with the native <input size> attribute, so Input, AutocompleteInput, NumberFieldInput, OTPFieldInput and TextArea omit it from their props types -- the same fix Kumo applies. Docs: reorder all 62 component pages to Kumo's structure (lead demo, Installation, Usage, Examples with cases as H3, API Reference) inside a new ComponentSection wrapper, and switch PropsTable to Kumo's Prop/Type/Default/Description columns with required marked on the prop name. propel ships no barrel export, so Installation keeps a single granular block rather than Kumo's Barrel/Granular split. Rewrite the prop-vocabulary rules in packages/propel/AGENTS.md and docs/design.md, which mandated the opposite convention, and correct six JSDoc examples still documenting the prominence prop dropped in #239. Claude-Session: https://claude.ai/code/session_01G2g3qvyp1r5nDydrHk955N
sriramveeraghanta
force-pushed
the
feat/kumo-prop-vocabulary
branch
from
July 26, 2026 11:14
997b09c to
fb6e7c5
Compare
|
📚 Storybook preview: https://pr-242-propel-storybook.vamsi-906.workers.dev |
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.
Description
Extends the button-family rework (#239) and the menu/context-menu standardization (#241) across every component, adopting Kumo's prop vocabulary and its component-page format.
Props
magnitudesizesm·md·lg·xlvalue spellings unchangedtonevariantBadgecarriesvariant="danger"andvariant="crimson"on one axis, exactly as Kumo's Badge doesemphasisvariantappearancevariantpresentationappearancemodevarianttableModes→tableVariants(rule 8)Per-axis exported types follow (
BadgeMagnitude/BadgeTone→BadgeSize/BadgeVariant), along withAVATAR_TONES→AVATAR_VARIANTS,getAvatarTone(Seed)→getAvatarVariant(Seed),avatarToneBgClass→avatarVariantBgClass,FieldOptionMagnitudeProvider/useFieldOptionMagnitude→FieldOptionSizeProvider/useFieldOptionSize, andTableMode/useTableMode→TableVariant/useTableVariant.Deliberately not renamed — forcing these would break the API rather than align it:
densitystays.CheckboxGroupField/RadioGroupFieldtake bothdensity(option spacing) andmagnitude(label text scale); both becomingsizeis a hard collision, and Kumo has nodensityvocabulary to borrow.sizing,fillType,surface,elevation,visibility,placement,layoutstay — Kumo has no counterpart.orientationandsidealready matched.The
sizerename collides with the native<input size>attribute exactly as the old rule 6b predicted. Kumo resolves this withOmit<…, "size">; the same fix is applied toInput,AutocompleteInput,NumberFieldInput,OTPFieldInput, andTextArea.Docs
All 62 component pages reordered to Kumo's structure — lead demo →
## Installation→## Usage→## Examples(cases demoted to H3) →## API Reference— each block wrapped in a newComponentSection.propel ships no barrel export (
package.jsonexposes only granular subpaths), so Installation keeps a single granular block rather than Kumo's### Barrel/### Granularsplit, which would document imports that don't resolve. Worth adding a barrel later if full parity is wanted.Protocol docs
packages/propel/AGENTS.mdanddocs/design.mdstill mandated the opposite convention (rule 6b banned native attribute names; rule 6c calledvariant"a smell"). Both rewritten, merged with the versions #241 landed. Also corrects six JSDoc examples still documenting theprominenceprop dropped in #239.Type of Change
This is a breaking change to the public API; a
minorchangeset is included (@makeplane/propelis pre-1.0).Screenshots and Media
Test Scenarios
## Examples.<Badge variant="danger">and<Badge variant="crimson">both render, confirming the mixed semantic/decorative union.<Input size="lg" />compiles and that the nativesizeattribute is no longer accepted onInput,AutocompleteInput,NumberFieldInput,OTPFieldInput,TextArea.CheckboxGroupField/RadioGroupFieldstill acceptdensityandsizeindependently.Tablecells acceptvariant="table"/variant="spreadsheet"(previouslymode).References
Follows #239 (button-family API) and #241 (menu/context-menu API reference). Rebased onto both.
Verification: typecheck 0 errors, 848 tests passing across 120 files, format clean, and a structural validator over all 62 MDX pages (import resolution, unused imports, undefined JSX refs, balanced sections, PropsTable source paths, section order) reports 0 problems.
pnpm buildandpnpm check:lintcould not be run locally —.node-versionrequires Node 24.16.0 and the dev machine has 22.17.1, so oxlint cannot load its.tsplugin and tsdown cannot loadtsdown.config.ts. Both fail at config-load time on a clean tree too. CI should be treated as the source of truth for those two.https://claude.ai/code/session_01G2g3qvyp1r5nDydrHk955N