feat(design-system-react-native): add Switch component#1022
Draft
brianacnguyen wants to merge 1 commit intomainfrom
Draft
feat(design-system-react-native): add Switch component#1022brianacnguyen wants to merge 1 commit intomainfrom
brianacnguyen wants to merge 1 commit intomainfrom
Conversation
Add a new Switch component that wraps React Native's native Switch with: - iOS alignment fix: applies marginRight: 4 on iOS to correct visual misalignment when placed in flex containers with justifyContent: 'space-between' - Proper accessibility support (accessibilityRole, accessibilityState, accessibilityLabel) - Optional label prop for text beside the switch - Controlled component pattern with isOn and onValueChange props - isDisabled prop for disabled state with opacity styling - Shared types in @metamask/design-system-shared following ADR-0004 This addresses the visual inconsistency issue where iOS Switch appears shifted compared to Android due to invisible built-in trailing padding. Resolves DSYS-659 Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com>
Contributor
📖 Storybook Preview |
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
Add a new
Switchcomponent to@metamask/design-system-react-nativethat wraps React Native's nativeSwitchwith platform-specific fixes and proper accessibility support.Key Features:
marginRight: 4on iOS to correct visual misalignment when placed in flex containers withjustifyContent: 'space-between'. This addresses the issue where iOS Switch appears shifted compared to Android due to invisible built-in trailing padding.accessibilityRole="switch",accessibilityState(checked/disabled), andaccessibilityLabelTextcomponent with proper stylingisOnandonValueChangeprops for state managementisDisabledprop with opacity styling applied to the container@metamask/design-system-sharedfollowing ADR-0004 centralized types architectureFiles Added:
packages/design-system-shared/src/types/Switch/- Shared types (ADR-0004)packages/design-system-react-native/src/components/Switch/- Component, types, tests, stories, READMERelated issues
Fixes: DSYS-659
Manual testing steps
yarn storybook:iosoryarn storybook:androidScreenshots/Recordings
Before
N/A - New component
After
The Switch component provides a consistent API and visual alignment across iOS and Android platforms.
Pre-merge author checklist
Pre-merge reviewer checklist
Slack Thread