Conversation
Compute built a ToggleGroup from scratch to get a selectable card with a badge next to the label and an interactive panel inside the selected option; databases forced a "title + description, no visible radio" card out of RadioCard with four `!` overrides and `className="hidden"`. `tag` renders a Badge next to the label, `hideIndicator` hides the radio circle so the card border carries the selection, and `content` renders below the label outside the `<label>`, so its controls are usable without toggling the radio; as a function it receives the checked state. Props no longer inherit `content` and `onChange` from the Card's HTML attributes: `onChange` was typed as a div change handler intersected with the radio callback, which forced consumers to narrow the argument.
This branch has not been deployed
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.
Summary
Compute built a
ToggleGroupfrom scratch to get a selectable card with a badge next to the label and an interactive panel inside the selected option; databases forced a "title + description, no visible radio" card out ofRadioCardwith four!overrides andclassName="hidden".tag: renders aBadgenext to the label.hideIndicator: hides the radio circle so the card border carries the selection.content: rendered below the label, outside the<label>, so its controls (aSelect, inputs) are usable without toggling the radio. As a function it receives the checked state.Type fix:
Propsno longer inheritscontentandonChangefrom the Card's HTML attributes.onChangewas typed as a div change handler intersected with the radio callback, which is why databases had to narrow withtypeof value === 'string'.RadioCardGroupoptions pick up the new props automatically.Test plan
npx vitest run lib/components/RadioCard lib/components/RadioCardGroup(17), lint, types, prettierRadioCard→WithTagAndContent