feat(remix): add labeled checkbox contracts - #105
Merged
Conversation
# Conflicts: # packages/remix/CHANGELOG.md
leoafarias
added a commit
that referenced
this pull request
Aug 5, 2026
Brings in the labeled checkbox contracts (#105) and the compound menu items (#101). The only conflict was CHANGELOG.md, where both sides inserted at the top of `## Unreleased`. Both sides are kept: the segmented control entry now sits above the checkbox label and menu item entries. Everything else auto-merged — the playground registry took the segmented control and menu entries side by side, and the public API compatibility test kept both sets of cases.
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
RemixCheckboxwith a first-class visible-label contract and an accessible whole-control interaction target.Component API
labelrenders styled visible text inside the checkbox tap/focus/semantics target.semanticLabelcan override the visible label without duplicate announcements.minimumTapTargetSizedefaults to 48×48 logical pixels;Size.zerois the explicit compact opt-out for caller-owned accessible compositions.style, andstyleSpecbehavior remains intact.Mix and code generation
CheckboxSpecowns generatedlabelandlabelSpacingfields. The generatedCheckboxStylerexposes those fields through the canonical Mix 2.2 surface. The small handwritten widget-call forwarding extension remains intentional:@MixableSpec(target:)requires aStyleWidget, whileRemixCheckboxmust resolve insideNakedCheckboxso Naked's state controller and Mix state variants stay synchronized.Flutter reuse and semantics
The implementation continues to delegate selection, tristate, focus, keyboard activation, pointer behavior, feedback, and checkbox semantics to
NakedCheckbox. It does not recreate an interaction primitive.Visible label text is excluded below the single checkbox semantics owner, so checked/mixed/enabled/focused/actions and the accessible name are announced once. RTL order, long labels, 3× text scaling, disabled behavior, and semantic activation are covered.
Visual Evidence
Captured and visually verified locally; the PNGs are ignored and are not part of the package diff:
.context/screenshots/checkbox-core-light.png— 1280×720 RGBA, SHA-256085063e3c5e5e993a0c435cda8c0c9aecb5ac6f877733864e319ae40a234438f.context/screenshots/checkbox-core-dark.png— 1280×720 RGBA, SHA-256664bd7e6d400b583800ac76da180761b2e5defca364459bea02ce1c636862220The check and indeterminate glyphs, disabled unchecked state, focus/card bounds, and label layout were inspected at full resolution. No tofu, overflow, clipping, or cropped content was observed. Hosted GitHub attachment upload remains pending because the connector and CLI do not expose the issue-attachment endpoint.
Validation
fvm flutter test test/components/checkbox test/public_api_test.dart test/public_api_compatibility_test.dart— 107/107 passed.git diff --check chore/publish-foundation...feat/checkbox-corepassed.Related Issues
Readiness gates
Breaking Change
Does this PR require users of the package to manually update their code?