Checkbox
Checkbox
Cross-platform checkbox with Material states for Android and iOS variants.
Usage
Collect true/false responses or build multi-select lists.
Highlights
- Platform-specific rendering
- Supports indeterminate visual state
When to use it
- Users can toggle multiple options in filters.
- You must represent tri-state data (checked, unchecked, mixed).
Examples
Default
Preview (Web)
import { Checkbox } from 'react-native-molecules/components/Checkbox'; export default function Example() { return <Checkbox indeterminate={false} defaultValue />; }
Checkbox with Label
Preview (Web)
import { Checkbox } from 'react-native-molecules/components/Checkbox'; export default function Example() { return <Checkbox indeterminate={false} defaultValue label="Label" />; }
| Prop | Type | Default | Description |
|---|---|---|---|
hitSlop | number | Insets | null | undefined | — | — |
id | string | undefined | — | — |
needsOffscreenAlphaCompositing | boolean | undefined | — | — |
onLayout | ((event: LayoutChangeEvent) => void) | undefined | — | — |
pointerEvents | "box-none" | "none" | "box-only" | "auto" | undefined | — | — |
removeClippedSubviews | boolean | undefined | — | — |
style | (((false | "" | ViewStyle | RegisteredStyle<ViewStyle> | RecursiveArray<Falsy | ViewStyle | RegisteredStyle<ViewStyle>> | ((state: PressableStateCallbackType) => StyleProp<ViewStyle>)) & (false | "" | ViewStyle | RegisteredStyle<ViewStyle> | RecursiveArray<Falsy | ViewStyle | RegisteredStyle<ViewStyle>>)) & (false | "" | TextStyle | RegisteredStyle<TextStyle> | RecursiveArray<Falsy | TextStyle | RegisteredStyle<TextStyle>>)) | null | undefined | — | — |
testID | string | undefined | — | — |
nativeID | string | undefined | — | — |
collapsable | boolean | undefined | — | — |
collapsableChildren | boolean | undefined | — | — |
onBlur | ((event: NativeSyntheticEvent<TargetedEvent>) => void) | null | undefined | — | — |
onFocus | ((event: NativeSyntheticEvent<TargetedEvent>) => void) | null | undefined | — | — |
renderToHardwareTextureAndroid | boolean | undefined | — | — |
focusable | boolean | undefined | — | — |
tabIndex | 0 | -1 | undefined | — | — |
shouldRasterizeIOS | boolean | undefined | — | — |
isTVSelectable | boolean | undefined | — | — |
hasTVPreferredFocus | boolean | undefined | — | — |
tvParallaxShiftDistanceX | number | undefined | — | — |
tvParallaxShiftDistanceY | number | undefined | — | — |
tvParallaxTiltAngle | number | undefined | — | — |
tvParallaxMagnification | number | undefined | — | — |
onStartShouldSetResponder | ((event: GestureResponderEvent) => boolean) | undefined | — | — |
onMoveShouldSetResponder | ((event: GestureResponderEvent) => boolean) | undefined | — | — |
onResponderEnd | ((event: GestureResponderEvent) => void) | undefined | — | — |
onResponderGrant | ((event: GestureResponderEvent) => void) | undefined | — | — |
onResponderReject | ((event: GestureResponderEvent) => void) | undefined | — | — |
onResponderMove | ((event: GestureResponderEvent) => void) | undefined | — | — |
onResponderRelease | ((event: GestureResponderEvent) => void) | undefined | — | — |
onResponderStart | ((event: GestureResponderEvent) => void) | undefined | — | — |
onResponderTerminationRequest | ((event: GestureResponderEvent) => boolean) | undefined | — | — |
onResponderTerminate | ((event: GestureResponderEvent) => void) | undefined | — | — |
onStartShouldSetResponderCapture | ((event: GestureResponderEvent) => boolean) | undefined | — | — |
onMoveShouldSetResponderCapture | ((event: GestureResponderEvent) => boolean) | undefined | — | — |
onTouchStart | ((event: GestureResponderEvent) => void) | undefined | — | — |
onTouchMove | ((event: GestureResponderEvent) => void) | undefined | — | — |
onTouchEnd | ((event: GestureResponderEvent) => void) | undefined | — | — |
onTouchCancel | ((event: GestureResponderEvent) => void) | undefined | — | — |
onTouchEndCapture | ((event: GestureResponderEvent) => void) | undefined | — | — |
onPointerEnter | ((event: PointerEvent) => void) | undefined | — | — |
onPointerEnterCapture | ((event: PointerEvent) => void) | undefined | — | — |
onPointerLeave | ((event: PointerEvent) => void) | undefined | — | — |
onPointerLeaveCapture | ((event: PointerEvent) => void) | undefined | — | — |
onPointerMove | ((event: PointerEvent) => void) | undefined | — | — |
onPointerMoveCapture | ((event: PointerEvent) => void) | undefined | — | — |
onPointerCancel | ((event: PointerEvent) => void) | undefined | — | — |
onPointerCancelCapture | ((event: PointerEvent) => void) | undefined | — | — |
onPointerDown | ((event: PointerEvent) => void) | undefined | — | — |
onPointerDownCapture | ((event: PointerEvent) => void) | undefined | — | — |
onPointerUp | ((event: PointerEvent) => void) | undefined | — | — |
onPointerUpCapture | ((event: PointerEvent) => void) | undefined | — | — |
accessible | boolean | undefined | — | — |
accessibilityActions | readonly Readonly<{ name: AccessibilityActionName | string; label?: string | undefined; }>[] | undefined | — | — |
accessibilityLabel | string | undefined | — | — |
aria-label | string | undefined | — | — |
accessibilityRole | AccessibilityRole | undefined | — | — |
accessibilityState | AccessibilityState | undefined | — | — |
aria-busy | boolean | undefined | — | — |
aria-checked | boolean | "mixed" | undefined | — | — |
aria-disabled | boolean | undefined | — | — |
aria-expanded | boolean | undefined | — | — |
aria-selected | boolean | undefined | — | — |
accessibilityHint | string | undefined | — | — |
accessibilityValue | AccessibilityValue | undefined | — | — |
aria-valuemax | number | undefined | — | — |
aria-valuemin | number | undefined | — | — |
aria-valuenow | number | undefined | — | — |
aria-valuetext | string | undefined | — | — |
onAccessibilityAction | ((event: AccessibilityActionEvent) => void) | undefined | — | — |
importantForAccessibility | "auto" | "yes" | "no" | "no-hide-descendants" | undefined | — | — |
aria-hidden | boolean | undefined | — | — |
aria-modal | boolean | undefined | — | — |
role | Role | undefined | — | — |
accessibilityLabelledBy | string | string[] | undefined | — | — |
aria-labelledby | string | undefined | — | — |
accessibilityLiveRegion | "none" | "polite" | "assertive" | undefined | — | — |
aria-live | "polite" | "assertive" | "off" | undefined | — | — |
screenReaderFocusable | boolean | undefined | — | — |
accessibilityElementsHidden | boolean | undefined | — | — |
accessibilityViewIsModal | boolean | undefined | — | — |
onAccessibilityEscape | (() => void) | undefined | — | — |
onAccessibilityTap | (() => void) | undefined | — | — |
onMagicTap | (() => void) | undefined | — | — |
accessibilityIgnoresInvertColors | boolean | undefined | — | — |
accessibilityLanguage | string | undefined | — | — |
accessibilityShowsLargeContentViewer | boolean | undefined | — | — |
accessibilityLargeContentTitle | string | undefined | — | — |
accessibilityRespondsToUserInteraction | boolean | undefined | — | — |
onPress | (((event: GestureResponderEvent) => void) & ((e: GestureResponderEvent) => void)) | undefined | — | — |
onPressIn | ((event: GestureResponderEvent) => void) | null | undefined | — | — |
onPressOut | ((event: GestureResponderEvent) => void) | null | undefined | — | — |
onLongPress | (((event: GestureResponderEvent) => void) & ((e: GestureResponderEvent) => void)) | undefined | — | — |
pressRetentionOffset | number | Insets | null | undefined | — | — |
disabled | boolean | undefined | — | — |
onHoverIn | ((event: MouseEvent) => void) | null | undefined | — | — |
onHoverOut | ((event: MouseEvent) => void) | null | undefined | — | — |
cancelable | boolean | null | undefined | — | — |
delayHoverIn | number | null | undefined | — | — |
delayHoverOut | number | null | undefined | — | — |
delayLongPress | number | null | undefined | — | — |
android_disableSound | boolean | null | undefined | — | — |
android_ripple | PressableAndroidRippleConfig | null | undefined | — | — |
testOnly_pressed | boolean | null | undefined | — | — |
unstable_pressDelay | number | undefined | — | — |
borderless | boolean | undefined | — | — |
background | Object | undefined | — | — |
centered | boolean | undefined | — | — |
rippleColor | string | undefined | — | — |
underlayColor | string | undefined | — | — |
value | boolean | undefined | — | — |
defaultValue | boolean | undefined | — | — |
onChange | ((newValue: boolean) => void) | undefined | — | — |
indeterminate | boolean | undefined | — | — |
size | Size | undefined | — | — |
uncheckedColor | string | undefined | — | — |
color | string | undefined | — | — |
label | string | undefined | — | — |
labelStyleRequired | StyleProp<TextStyle> | — | — |
containerStyle | ViewStyle | undefined | — | — |
labelProps | Omit<TextProps, "children" | "style"> | undefined | — | — |
position | "leading" | "trailing" | undefined | — | — |