@entropix/react-native 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/theme-context.tsx","../src/utils/map-accessibility-to-rn.ts","../src/components/button.tsx","../src/components/toggle.tsx","../src/components/switch.tsx","../src/components/dialog/dialog-context.tsx","../src/components/dialog/dialog.tsx","../src/components/dialog/dialog-trigger.tsx","../src/components/dialog/dialog-content.tsx","../src/components/dialog/dialog-title.tsx","../src/components/dialog/dialog-description.tsx","../src/components/dialog/dialog-close.tsx","../src/components/dialog/dialog-overlay.tsx","../src/components/tabs/tabs-context.tsx","../src/components/tabs/tabs.tsx","../src/components/tabs/tab-list.tsx","../src/components/tabs/tab.tsx","../src/components/tabs/tab-panel.tsx","../src/components/accordion/accordion-context.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-trigger.tsx","../src/components/accordion/accordion-panel.tsx","../src/components/menu/menu-context.tsx","../src/components/menu/menu.tsx","../src/components/menu/menu-trigger.tsx","../src/components/menu/menu-content.tsx","../src/utils/wrap-string-children.tsx","../src/components/menu/menu-item.tsx","../src/utils/use-breakpoint.ts","../src/components/layout/stack.tsx","../src/components/layout/inline.tsx","../src/components/layout/container.tsx","../src/components/layout/divider.tsx"],"names":["createContext","lightTokens","baseTokens","useMemo","darkTokens","jsx","useContext","useButton","useCallback","Pressable","Text","useToggle","useRef","Animated","useEffect","useDialog","Modal","View","StyleSheet","useTabs","useAccordion","jsxs","useMenu","Dimensions","useState","getGapValue"],"mappings":"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","file":"index.cjs","sourcesContent":["import React, { createContext, useContext, useMemo } from \"react\";\nimport { tokens as baseTokens } from \"@entropix/tokens/native\";\nimport { tokens as lightTokens } from \"@entropix/tokens/native/light\";\nimport { tokens as darkTokens } from \"@entropix/tokens/native/dark\";\n\nexport type EntropixTheme = typeof lightTokens;\nexport type ThemeMode = \"light\" | \"dark\";\n\ninterface ThemeContextValue {\n mode: ThemeMode;\n tokens: EntropixTheme;\n baseTokens: typeof baseTokens;\n}\n\nconst ThemeContext = createContext<ThemeContextValue>({\n mode: \"light\",\n tokens: lightTokens,\n baseTokens,\n});\n\nexport interface EntropixProviderProps {\n /** Theme mode: \"light\" or \"dark\". Default: \"light\" */\n mode?: ThemeMode;\n children: React.ReactNode;\n}\n\n/**\n * EntropixProvider — Provides theme tokens to all Entropix components.\n *\n * Wrap your app root with this provider. All Entropix components will\n * automatically pick up the current theme tokens.\n *\n * ```tsx\n * <EntropixProvider mode=\"dark\">\n * <App />\n * </EntropixProvider>\n * ```\n */\nexport function EntropixProvider({\n mode = \"light\",\n children,\n}: EntropixProviderProps) {\n const value = useMemo<ThemeContextValue>(\n () => ({\n mode,\n tokens: mode === \"dark\" ? darkTokens : lightTokens,\n baseTokens,\n }),\n [mode]\n );\n\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n}\n\n/**\n * useTheme — Access current Entropix theme tokens.\n *\n * Returns the resolved token values for the current theme (light or dark).\n * Must be used within an EntropixProvider.\n */\nexport function useTheme(): ThemeContextValue {\n return useContext(ThemeContext);\n}\n","import type { AccessibilityProps, AriaRole } from \"@entropix/core\";\nimport type { AccessibilityRole, AccessibilityState } from \"react-native\";\nimport type { RNAccessibilityProps } from \"./types.js\";\n\n/**\n * Maps core AriaRole values to React Native AccessibilityRole equivalents.\n * Some roles have no direct RN equivalent and use the closest match.\n */\nconst RN_ROLE_MAP: Partial<Record<AriaRole, AccessibilityRole>> = {\n button: \"button\",\n checkbox: \"checkbox\",\n switch: \"switch\",\n dialog: \"none\", // Modal component handles dialog semantics\n alertdialog: \"alert\",\n link: \"link\",\n tab: \"tab\",\n tablist: \"tablist\",\n menu: \"menu\",\n menuitem: \"menuitem\",\n radio: \"radio\",\n radiogroup: \"radiogroup\",\n slider: \"adjustable\",\n spinbutton: \"spinbutton\",\n textbox: \"text\",\n combobox: \"combobox\",\n progressbar: \"progressbar\",\n alert: \"alert\",\n status: \"text\",\n tooltip: \"text\",\n none: \"none\",\n presentation: \"none\",\n};\n\n/**\n * Maps platform-neutral AccessibilityProps from @entropix/core\n * to React Native accessibility props.\n *\n * Key differences from the web adapter:\n * - Boolean states aggregated into accessibilityState object\n * - Value props aggregated into accessibilityValue object\n * - describedBy maps to accessibilityHint (closest RN equivalent)\n * - hidden maps to both iOS (accessibilityElementsHidden) and Android (importantForAccessibility)\n * - modal, hasPopup, controls, owns, tabIndex, pressed are silently dropped (no RN equivalent)\n */\nexport function mapAccessibilityToRN(\n props: AccessibilityProps,\n): RNAccessibilityProps {\n const result: RNAccessibilityProps = { accessible: true };\n\n // Role mapping\n if (props.role) {\n result.accessibilityRole =\n RN_ROLE_MAP[props.role] ?? (props.role as AccessibilityRole);\n }\n\n // Label\n if (props.label) {\n result.accessibilityLabel = props.label;\n }\n\n // Hint (describedBy → accessibilityHint)\n if (props.describedBy) {\n result.accessibilityHint = props.describedBy;\n }\n\n // LabelledBy (RN 0.71+)\n if (props.labelledBy) {\n result.accessibilityLabelledBy = props.labelledBy;\n }\n\n // Aggregate boolean states into accessibilityState\n const state: AccessibilityState = {};\n let hasState = false;\n\n if (props.disabled !== undefined) {\n state.disabled = props.disabled;\n hasState = true;\n }\n if (props.expanded !== undefined) {\n state.expanded = props.expanded;\n hasState = true;\n }\n if (props.selected !== undefined) {\n state.selected = props.selected;\n hasState = true;\n }\n if (props.checked !== undefined) {\n state.checked = props.checked;\n hasState = true;\n }\n if (props.busy !== undefined) {\n state.busy = props.busy;\n hasState = true;\n }\n // Note: props.pressed not supported by RN AccessibilityState\n\n if (hasState) {\n result.accessibilityState = state;\n }\n\n // Aggregate value props into accessibilityValue\n if (\n props.valueNow !== undefined ||\n props.valueMin !== undefined ||\n props.valueMax !== undefined ||\n props.valueText !== undefined\n ) {\n result.accessibilityValue = {};\n if (props.valueNow !== undefined)\n result.accessibilityValue.now = props.valueNow;\n if (props.valueMin !== undefined)\n result.accessibilityValue.min = props.valueMin;\n if (props.valueMax !== undefined)\n result.accessibilityValue.max = props.valueMax;\n if (props.valueText !== undefined)\n result.accessibilityValue.text = props.valueText;\n }\n\n // Live region\n if (props.live) {\n result.accessibilityLiveRegion =\n props.live === \"off\" ? \"none\" : props.live;\n }\n\n // Hidden — dual platform coverage (iOS + Android)\n if (props.hidden) {\n result.accessibilityElementsHidden = true;\n result.importantForAccessibility = \"no-hide-descendants\";\n }\n\n // Silently dropped — no RN equivalent:\n // modal (handled by <Modal> component)\n // hasPopup, controls, owns (not supported in RN)\n // tabIndex (not applicable in RN)\n // pressed (not in RN AccessibilityState)\n\n return result;\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useButton } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../theme/theme-context.js\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** Called when the button is pressed */\n onPress?: () => void;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Whether the button is in a loading state */\n loading?: boolean;\n /** Visual variant. Default: \"primary\" */\n variant?: ButtonVariant;\n /** Size. Default: \"md\" */\n size?: ButtonSize;\n /** Override container style */\n style?: StyleProp<ViewStyle>;\n /** Override label text style */\n textStyle?: TextStyle;\n children?: React.ReactNode;\n}\n\n/**\n * Button — styled React Native button with variant and size support.\n *\n * ```tsx\n * <Button variant=\"primary\" size=\"md\" onPress={handlePress}>\n * Save Changes\n * </Button>\n * ```\n */\nexport function Button({\n onPress,\n disabled,\n loading,\n variant = \"primary\",\n size = \"md\",\n style,\n textStyle,\n children,\n ...rest\n}: ButtonProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const { isDisabled, isLoading, getButtonProps } = useButton({\n disabled,\n loading,\n onPress,\n elementType: \"div\",\n });\n\n const propGetterReturn = getButtonProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n const sizeStyles = getSizeStyle(size, bt);\n const variantStyles = getVariantStyle(variant, t);\n const labelColor = getVariantTextColor(variant, t);\n const isInactive = isDisabled || isLoading;\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={isInactive}\n onPress={isInactive ? undefined : handlePress}\n style={[\n baseStyle,\n sizeStyles.container,\n variantStyles,\n isInactive && { opacity: 0.5 },\n style,\n ]}\n >\n {typeof children === \"string\" ? (\n <Text\n style={[\n { color: labelColor, fontSize: sizeStyles.fontSize, fontWeight: \"500\" },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Pressable>\n );\n}\n\nconst baseStyle: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n};\n\nfunction getSizeStyle(size: ButtonSize, bt: Record<string, unknown>) {\n switch (size) {\n case \"sm\":\n return {\n container: {\n paddingVertical: bt.entropixSpacing1 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n borderRadius: bt.entropixRadiusSm as number,\n gap: bt.entropixButtonGap as number,\n } as ViewStyle,\n fontSize: bt.entropixFontSizeXs as number,\n };\n case \"lg\":\n return {\n container: {\n paddingVertical: bt.entropixSpacing3 as number,\n paddingHorizontal: bt.entropixSpacing6 as number,\n borderRadius: bt.entropixRadiusLg as number,\n gap: bt.entropixButtonGap as number,\n } as ViewStyle,\n fontSize: bt.entropixFontSizeBase as number,\n };\n default:\n return {\n container: {\n paddingVertical: bt.entropixButtonPaddingY as number,\n paddingHorizontal: bt.entropixButtonPaddingX as number,\n borderRadius: bt.entropixButtonBorderRadius as number,\n gap: bt.entropixButtonGap as number,\n } as ViewStyle,\n fontSize: bt.entropixButtonFontSize as number,\n };\n }\n}\n\nfunction getVariantStyle(variant: ButtonVariant, t: Record<string, unknown>): ViewStyle {\n switch (variant) {\n case \"primary\":\n return { backgroundColor: t.entropixButtonPrimaryBg as string, borderWidth: 1, borderColor: t.entropixButtonPrimaryBorder as string };\n case \"secondary\":\n return { backgroundColor: t.entropixButtonSecondaryBg as string, borderWidth: 1, borderColor: t.entropixButtonSecondaryBorder as string };\n case \"outline\":\n return { backgroundColor: \"transparent\", borderWidth: 1, borderColor: t.entropixColorBorderDefault as string };\n case \"ghost\":\n return { backgroundColor: \"transparent\", borderWidth: 1, borderColor: \"transparent\" };\n case \"danger\":\n return { backgroundColor: t.entropixButtonDangerBg as string, borderWidth: 1, borderColor: t.entropixButtonDangerBorder as string };\n }\n}\n\nfunction getVariantTextColor(variant: ButtonVariant, t: Record<string, unknown>): string {\n switch (variant) {\n case \"primary\": return t.entropixButtonPrimaryText as string;\n case \"secondary\": return t.entropixButtonSecondaryText as string;\n case \"outline\":\n case \"ghost\": return t.entropixColorTextPrimary as string;\n case \"danger\": return t.entropixButtonDangerText as string;\n }\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useToggle, type UseToggleOptions } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../theme/theme-context.js\";\n\nexport interface ToggleProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** Controlled checked state */\n checked?: boolean;\n /** Default checked state for uncontrolled mode */\n defaultChecked?: boolean;\n /** Called when checked state changes */\n onChange?: (checked: boolean) => void;\n /** Whether the toggle is disabled */\n disabled?: boolean;\n /** Accessible label */\n label?: string;\n /** Override container style */\n style?: StyleProp<ViewStyle>;\n /** Override label text style */\n textStyle?: TextStyle;\n children?: React.ReactNode;\n}\n\n/** Internal props used by Switch to override the role */\ninterface ToggleInternalProps extends ToggleProps {\n /** @internal Override the ARIA role */\n role?: UseToggleOptions[\"role\"];\n}\n\n/**\n * Toggle — styled checkbox toggle.\n *\n * Renders as a bordered pill that fills blue when checked.\n *\n * ```tsx\n * <Toggle onChange={setChecked}>Accept Terms</Toggle>\n * ```\n */\nexport function Toggle(props: ToggleProps) {\n return <ToggleInner {...props} role=\"checkbox\" />;\n}\n\n/** @internal Shared implementation for Toggle and Switch */\nexport function ToggleInner({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n role = \"checkbox\",\n style,\n textStyle,\n children,\n ...rest\n}: ToggleInternalProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const { isDisabled, getToggleProps } = useToggle({\n checked,\n defaultChecked,\n onChange,\n disabled,\n role,\n });\n\n const propGetterReturn = getToggleProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const isChecked = propGetterReturn.accessibility.checked === true;\n\n if (label) {\n rnAccessibility.accessibilityLabel = label;\n }\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={isDisabled}\n onPress={isDisabled ? undefined : handlePress}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n borderWidth: 1,\n borderColor: isChecked ? \"transparent\" : (t.entropixColorBorderDefault as string),\n borderRadius: bt.entropixRadiusMd as number,\n backgroundColor: isChecked\n ? (t.entropixColorActionPrimaryDefault as string)\n : (t.entropixColorBgPrimary as string),\n },\n isDisabled && { opacity: 0.5 },\n style,\n ]}\n >\n {typeof children === \"string\" ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: isChecked\n ? (t.entropixColorTextInverse as string)\n : (t.entropixColorTextPrimary as string),\n },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : children != null ? (\n children\n ) : (\n <Text\n style={{\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: isChecked\n ? (t.entropixColorTextInverse as string)\n : (t.entropixColorTextPrimary as string),\n }}\n >\n {isChecked ? \"On\" : \"Off\"}\n </Text>\n )}\n </Pressable>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport {\n Animated,\n Pressable,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useToggle } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../theme/theme-context.js\";\n\nconst TRACK_WIDTH = 44;\nconst TRACK_HEIGHT = 24;\nconst TRACK_PADDING = 2;\nconst THUMB_SIZE = TRACK_HEIGHT - TRACK_PADDING * 2; // 20\nconst THUMB_TRAVEL = TRACK_WIDTH - TRACK_PADDING * 2 - THUMB_SIZE; // 20\n\nexport interface SwitchProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** Controlled checked state */\n checked?: boolean;\n /** Default checked state for uncontrolled mode */\n defaultChecked?: boolean;\n /** Called when checked state changes */\n onChange?: (checked: boolean) => void;\n /** Whether the switch is disabled */\n disabled?: boolean;\n /** Accessible label */\n label?: string;\n /** Override track style */\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * Switch — styled toggle with track + sliding thumb.\n *\n * ```tsx\n * <Switch checked={isOn} onChange={setIsOn} label=\"Notifications\" />\n * ```\n */\nexport function Switch({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n style,\n ...rest\n}: SwitchProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const { isDisabled, getToggleProps } = useToggle({\n checked,\n defaultChecked,\n onChange,\n disabled,\n role: \"switch\",\n });\n\n const propGetterReturn = getToggleProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const isChecked = propGetterReturn.accessibility.checked === true;\n\n if (label) {\n rnAccessibility.accessibilityLabel = label;\n }\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n // Animated thumb position\n const thumbAnim = useRef(\n new Animated.Value(defaultChecked || checked ? THUMB_TRAVEL : 0)\n ).current;\n\n useEffect(() => {\n Animated.timing(thumbAnim, {\n toValue: isChecked ? THUMB_TRAVEL : 0,\n duration: 150,\n useNativeDriver: false,\n }).start();\n }, [isChecked, thumbAnim]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={isDisabled}\n onPress={isDisabled ? undefined : handlePress}\n style={[\n {\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: bt.entropixRadiusFull as number,\n backgroundColor: isChecked\n ? (t.entropixColorActionPrimaryDefault as string)\n : (t.entropixColorGray300 as string),\n padding: TRACK_PADDING,\n justifyContent: \"center\",\n },\n isDisabled && { opacity: 0.5 },\n style,\n ]}\n >\n <Animated.View\n style={{\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: bt.entropixRadiusFull as number,\n backgroundColor: t.entropixColorWhite as string,\n transform: [{ translateX: thumbAnim }],\n }}\n />\n </Pressable>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseDialogReturn } from \"@entropix/core\";\n\nexport const DialogContext = createContext<UseDialogReturn | null>(null);\n\n/**\n * Hook to access the nearest Dialog context.\n * Throws if used outside a <Dialog> component.\n */\nexport function useDialogContext(): UseDialogReturn {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error(\n \"Dialog compound components must be used within a <Dialog> provider.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { useDialog, type UseDialogOptions } from \"@entropix/core\";\nimport { DialogContext } from \"./dialog-context.js\";\n\nexport interface DialogProps extends UseDialogOptions {\n children: React.ReactNode;\n}\n\n/**\n * Dialog root — provides dialog state to compound sub-components.\n * Renders no UI of its own.\n */\nexport function Dialog({\n children,\n isOpen,\n defaultOpen,\n onOpenChange,\n closeOnOverlayPress,\n closeOnEscape,\n modal,\n role,\n}: DialogProps) {\n const dialog = useDialog({\n isOpen,\n defaultOpen,\n onOpenChange,\n closeOnOverlayPress,\n closeOnEscape,\n modal,\n role,\n });\n\n return (\n <DialogContext.Provider value={dialog}>{children}</DialogContext.Provider>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\n\nexport interface DialogTriggerProps\n extends Omit<PressableProps, \"onPress\" | \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * DialogTrigger — Pressable that opens/closes the dialog.\n */\nexport function DialogTrigger({\n children,\n style,\n ...rest\n}: DialogTriggerProps) {\n const { getTriggerProps } = useDialogContext();\n const propGetterReturn = getTriggerProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={handlePress}\n style={style}\n >\n {children}\n </Pressable>\n );\n}\n","import React from \"react\";\nimport {\n Modal,\n View,\n type ViewProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DialogContentProps extends Omit<ViewProps, \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n /** Style for the inner card. */\n cardStyle?: StyleProp<ViewStyle>;\n /** Modal animation type. Default: \"fade\" */\n animationType?: \"none\" | \"slide\" | \"fade\";\n /** Whether the modal background is transparent. Default: true */\n transparent?: boolean;\n}\n\n/**\n * DialogContent — wraps children in RN's Modal component.\n *\n * Modal provides native focus trapping for screen readers.\n * onRequestClose handles Android back button (maps to core's \"dismiss\" intent).\n */\nexport function DialogContent({\n children,\n style,\n cardStyle,\n animationType = \"fade\",\n transparent = true,\n ...rest\n}: DialogContentProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { isOpen, close, ids, getContentProps } = useDialogContext();\n const propGetterReturn = getContentProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n return (\n <Modal\n visible={isOpen}\n transparent={transparent}\n animationType={animationType}\n onRequestClose={close}\n supportedOrientations={[\"portrait\", \"landscape\"]}\n >\n <View\n {...rest}\n style={[\n {\n flex: 1,\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n },\n style,\n ]}\n >\n <View\n {...rnAccessibility}\n nativeID={ids.content}\n style={[\n {\n backgroundColor: t.entropixColorBgPrimary as string,\n borderRadius: bt.entropixRadiusLg as number,\n padding: bt.entropixSpacing6 as number,\n width: \"90%\",\n maxWidth: 480,\n shadowColor: \"#000\",\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.15,\n shadowRadius: 12,\n elevation: 8,\n },\n cardStyle,\n ]}\n >\n {children}\n </View>\n </View>\n </Modal>\n );\n}\n","import React from \"react\";\nimport { Text, type TextProps, type StyleProp, type TextStyle } from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DialogTitleProps extends Omit<TextProps, \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<TextStyle>;\n}\n\n/**\n * DialogTitle — Text element with nativeID for accessibility linking.\n * Uses accessibilityRole=\"header\" for screen reader heading semantics.\n */\nexport function DialogTitle({ children, style, ...rest }: DialogTitleProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { ids } = useDialogContext();\n\n return (\n <Text\n {...rest}\n nativeID={ids.title}\n style={[\n {\n fontSize: 18,\n fontWeight: \"600\",\n color: t.entropixColorTextPrimary as string,\n marginBottom: bt.entropixSpacing2 as number,\n },\n style,\n ]}\n accessibilityRole=\"header\"\n >\n {children}\n </Text>\n );\n}\n","import React from \"react\";\nimport { Text, type TextProps, type StyleProp, type TextStyle } from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DialogDescriptionProps extends Omit<TextProps, \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<TextStyle>;\n}\n\n/**\n * DialogDescription — Text element with nativeID for accessibility linking.\n */\nexport function DialogDescription({\n children,\n style,\n ...rest\n}: DialogDescriptionProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { ids } = useDialogContext();\n\n return (\n <Text\n {...rest}\n nativeID={ids.description}\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n color: t.entropixColorTextSecondary as string,\n lineHeight: 20,\n marginBottom: bt.entropixSpacing4 as number,\n },\n style,\n ]}\n >\n {children}\n </Text>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DialogCloseProps\n extends Omit<PressableProps, \"onPress\" | \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * DialogClose — Pressable that closes the dialog.\n * Renders as a positioned \"✕\" button by default if no children provided.\n */\nexport function DialogClose({ children, style, ...rest }: DialogCloseProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getCloseProps } = useDialogContext();\n const propGetterReturn = getCloseProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={handlePress}\n style={[\n {\n position: \"absolute\",\n top: bt.entropixSpacing3 as number,\n right: bt.entropixSpacing3 as number,\n width: 32,\n height: 32,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: bt.entropixRadiusSm as number,\n },\n style,\n ]}\n accessibilityRole=\"button\"\n >\n {children ?? (\n <Text\n style={{\n fontSize: 16,\n color: t.entropixColorTextSecondary as string,\n }}\n >\n ✕\n </Text>\n )}\n </Pressable>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\n\nexport interface DialogOverlayProps {\n style?: StyleProp<ViewStyle>;\n testID?: string;\n}\n\n/**\n * DialogOverlay — backdrop element behind dialog content.\n * Note: With the self-styled DialogContent, the overlay is built into the\n * Modal wrapper. This component is kept for consumers who need a separate\n * overlay element (e.g., custom dismiss-on-tap behavior outside DialogContent).\n */\nexport function DialogOverlay({ style, testID }: DialogOverlayProps) {\n const { isOpen, getOverlayProps } = useDialogContext();\n const propGetterReturn = getOverlayProps();\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n if (!isOpen) return null;\n\n return (\n <Pressable\n testID={testID}\n accessible={false}\n importantForAccessibility=\"no\"\n onPress={propGetterReturn.onAction ? handlePress : undefined}\n style={[\n {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n },\n style,\n ]}\n />\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseTabsReturn } from \"@entropix/core\";\n\nexport const TabsContext = createContext<UseTabsReturn | null>(null);\n\nexport function useTabsContext(): UseTabsReturn {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\n \"Tabs compound components must be used within a <Tabs> provider.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useTabs, type UseTabsOptions } from \"@entropix/core\";\nimport { TabsContext } from \"./tabs-context.js\";\n\nexport interface TabsProps extends UseTabsOptions {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function Tabs({ children, style, ...options }: TabsProps) {\n const tabs = useTabs(options);\n\n return (\n <TabsContext.Provider value={tabs}>\n <View style={style}>{children}</View>\n </TabsContext.Provider>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useTabsContext } from \"./tabs-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface TabListProps {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function TabList({ children, style }: TabListProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getTabListProps } = useTabsContext();\n const propGetterReturn = getTabListProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n return (\n <View\n {...rnAccessibility}\n style={[\n {\n flexDirection: \"row\",\n gap: bt.entropixSpacing1 as number,\n borderBottomWidth: 1,\n borderBottomColor: t.entropixColorBorderDefault as string,\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useTabsContext } from \"./tabs-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface TabProps extends Omit<PressableProps, \"onPress\" | \"style\" | \"children\"> {\n value: string;\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: TextStyle;\n}\n\nexport function Tab({ value, children, style, textStyle, ...rest }: TabProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getTabProps, selectedKey } = useTabsContext();\n const propGetterReturn = getTabProps(value);\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const isActive = selectedKey === value;\n const isDisabled = propGetterReturn.accessibility.disabled === true;\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={propGetterReturn.onAction ? handlePress : undefined}\n style={[\n {\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing4 as number,\n borderBottomWidth: 2,\n borderBottomColor: isActive\n ? (t.entropixColorActionPrimaryDefault as string)\n : \"transparent\",\n },\n isDisabled && { opacity: 0.5 },\n style,\n ]}\n >\n {typeof children === \"string\" ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: isActive\n ? (t.entropixColorActionPrimaryDefault as string)\n : (t.entropixColorTextSecondary as string),\n },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Pressable>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useTabsContext } from \"./tabs-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface TabPanelProps {\n value: string;\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function TabPanel({ value, children, style }: TabPanelProps) {\n const { baseTokens: bt } = useTheme();\n const { getTabPanelProps, selectedKey } = useTabsContext();\n const propGetterReturn = getTabPanelProps(value);\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n if (selectedKey !== value) return null;\n\n return (\n <View\n {...rnAccessibility}\n style={[{ padding: bt.entropixSpacing4 as number }, style]}\n >\n {children}\n </View>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseAccordionReturn } from \"@entropix/core\";\n\nexport const AccordionContext = createContext<UseAccordionReturn | null>(null);\n\nexport function useAccordionContext(): UseAccordionReturn {\n const context = useContext(AccordionContext);\n if (!context) {\n throw new Error(\n \"Accordion compound components must be used within an <Accordion> provider.\",\n );\n }\n return context;\n}\n\nexport const AccordionItemContext = createContext<string | null>(null);\n\nexport function useAccordionItemContext(): string {\n const context = useContext(AccordionItemContext);\n if (context === null) {\n throw new Error(\n \"AccordionTrigger and AccordionPanel must be used within an <AccordionItem>.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useAccordion, type UseAccordionOptions } from \"@entropix/core\";\nimport { AccordionContext } from \"./accordion-context.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface AccordionProps extends UseAccordionOptions {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function Accordion({ children, style, ...options }: AccordionProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const accordion = useAccordion(options);\n\n return (\n <AccordionContext.Provider value={accordion}>\n <View\n style={[\n {\n borderWidth: 1,\n borderColor: t.entropixColorBorderDefault as string,\n borderRadius: bt.entropixRadiusLg as number,\n overflow: \"hidden\",\n },\n style,\n ]}\n >\n {children}\n </View>\n </AccordionContext.Provider>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { AccordionItemContext } from \"./accordion-context.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface AccordionItemProps {\n value: string;\n /** Whether this is the last item (hides bottom border). Auto-detected if omitted. */\n isLast?: boolean;\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function AccordionItem({\n value,\n isLast = false,\n children,\n style,\n}: AccordionItemProps) {\n const { tokens: t } = useTheme();\n\n return (\n <AccordionItemContext.Provider value={value}>\n <View\n style={[\n {\n borderBottomWidth: isLast ? 0 : 1,\n borderBottomColor: t.entropixColorBorderDefault as string,\n },\n style,\n ]}\n >\n {children}\n </View>\n </AccordionItemContext.Provider>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport {\n useAccordionContext,\n useAccordionItemContext,\n} from \"./accordion-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface AccordionTriggerProps\n extends Omit<PressableProps, \"onPress\" | \"style\" | \"children\"> {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: TextStyle;\n}\n\nexport function AccordionTrigger({\n children,\n style,\n textStyle,\n ...rest\n}: AccordionTriggerProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const itemKey = useAccordionItemContext();\n const { getItemTriggerProps, isExpanded } = useAccordionContext();\n const propGetterReturn = getItemTriggerProps(itemKey);\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const expanded = isExpanded(itemKey);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={propGetterReturn.onAction ? handlePress : undefined}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingVertical: bt.entropixSpacing4 as number,\n paddingHorizontal: bt.entropixSpacing4 as number,\n },\n style,\n ]}\n >\n {typeof children === \"string\" ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: t.entropixColorTextPrimary as string,\n flex: 1,\n },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n <Text\n style={{\n fontSize: 12,\n color: t.entropixColorTextSecondary as string,\n marginLeft: bt.entropixSpacing2 as number,\n }}\n >\n {expanded ? \"−\" : \"+\"}\n </Text>\n </Pressable>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport {\n useAccordionContext,\n useAccordionItemContext,\n} from \"./accordion-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface AccordionPanelProps {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function AccordionPanel({ children, style }: AccordionPanelProps) {\n const { baseTokens: bt } = useTheme();\n const itemKey = useAccordionItemContext();\n const { getItemPanelProps, isExpanded } = useAccordionContext();\n const propGetterReturn = getItemPanelProps(itemKey);\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n if (!isExpanded(itemKey)) return null;\n\n return (\n <View\n {...rnAccessibility}\n style={[\n {\n paddingHorizontal: bt.entropixSpacing4 as number,\n paddingBottom: bt.entropixSpacing4 as number,\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseMenuReturn } from \"@entropix/core\";\n\nexport const MenuContext = createContext<UseMenuReturn | null>(null);\n\nexport function useMenuContext(): UseMenuReturn {\n const context = useContext(MenuContext);\n if (!context) {\n throw new Error(\n \"Menu compound components must be used within a <Menu> provider.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { useMenu, type UseMenuOptions } from \"@entropix/core\";\nimport { MenuContext } from \"./menu-context.js\";\n\nexport interface MenuProps extends UseMenuOptions {\n children: React.ReactNode;\n}\n\nexport function Menu({ children, ...options }: MenuProps) {\n const menu = useMenu(options);\n\n return (\n <MenuContext.Provider value={menu}>{children}</MenuContext.Provider>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useMenuContext } from \"./menu-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\n\nexport interface MenuTriggerProps\n extends Omit<PressableProps, \"onPress\" | \"style\"> {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function MenuTrigger({ children, style, ...rest }: MenuTriggerProps) {\n const { getTriggerProps } = useMenuContext();\n const propGetterReturn = getTriggerProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={handlePress}\n style={style}\n >\n {children}\n </Pressable>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useMenuContext } from \"./menu-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface MenuContentProps {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n}\n\nexport function MenuContent({ children, style, testID }: MenuContentProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { isOpen, getMenuProps } = useMenuContext();\n const propGetterReturn = getMenuProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n if (!isOpen) return null;\n\n return (\n <View\n {...rnAccessibility}\n testID={testID}\n style={[\n {\n minWidth: 160,\n padding: bt.entropixSpacing1 as number,\n backgroundColor: t.entropixColorBgPrimary as string,\n borderWidth: 1,\n borderColor: t.entropixColorBorderDefault as string,\n borderRadius: bt.entropixRadiusMd as number,\n shadowColor: \"#000\",\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 8,\n elevation: 4,\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n}\n","import React from \"react\";\nimport { Text, type TextStyle } from \"react-native\";\n\n/**\n * Wraps raw string/number children in a <Text> component.\n *\n * In React Native, strings cannot be rendered directly inside\n * View or Pressable — they must be inside a <Text> element.\n * React elements are passed through unchanged.\n */\nexport function wrapStringChildren(\n children: React.ReactNode,\n style?: TextStyle,\n): React.ReactNode {\n if (typeof children === \"string\" || typeof children === \"number\") {\n return <Text style={style}>{children}</Text>;\n }\n return children;\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useMenuContext } from \"./menu-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { wrapStringChildren } from \"../../utils/wrap-string-children.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface MenuItemProps\n extends Omit<PressableProps, \"onPress\" | \"disabled\" | \"style\"> {\n index: number;\n onSelect?: () => void;\n disabled?: boolean;\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: TextStyle;\n}\n\nexport function MenuItem({\n index,\n onSelect,\n disabled,\n children,\n style,\n textStyle,\n ...rest\n}: MenuItemProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getItemProps } = useMenuContext();\n const propGetterReturn = getItemProps(index, { onSelect, disabled });\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={disabled}\n onPress={propGetterReturn.onAction ? handlePress : undefined}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n borderRadius: bt.entropixRadiusSm as number,\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n {wrapStringChildren(children, {\n fontSize: bt.entropixFontSizeSm as number,\n color: t.entropixColorTextPrimary as string,\n ...textStyle,\n })}\n </Pressable>\n );\n}\n","import { useState, useEffect, useCallback } from \"react\";\nimport { Dimensions } from \"react-native\";\n\n/**\n * Breakpoint values in pixels, matching @entropix/tokens breakpoint primitives.\n */\nconst BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n} as const;\n\nexport type Breakpoint = \"base\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nconst BREAKPOINT_ORDER: Breakpoint[] = [\"base\", \"sm\", \"md\", \"lg\", \"xl\", \"2xl\"];\n\n/**\n * Returns the current breakpoint name based on screen width.\n * Uses React Native's Dimensions API and listens for screen size changes\n * (orientation changes, split-screen, etc.).\n *\n * - `\"base\"` — <640px (phones portrait)\n * - `\"sm\"` — ≥640px (phones landscape)\n * - `\"md\"` — ≥768px (tablets portrait)\n * - `\"lg\"` — ≥1024px (tablets landscape)\n * - `\"xl\"` — ≥1280px (large tablets / desktop)\n * - `\"2xl\"` — ≥1536px (wide screens)\n *\n * ```tsx\n * const breakpoint = useBreakpoint();\n * const isMobile = breakpoint === \"base\" || breakpoint === \"sm\";\n * ```\n */\nexport function useBreakpoint(): Breakpoint {\n const getBreakpoint = useCallback((): Breakpoint => {\n const { width } = Dimensions.get(\"window\");\n if (width >= BREAKPOINTS[\"2xl\"]) return \"2xl\";\n if (width >= BREAKPOINTS.xl) return \"xl\";\n if (width >= BREAKPOINTS.lg) return \"lg\";\n if (width >= BREAKPOINTS.md) return \"md\";\n if (width >= BREAKPOINTS.sm) return \"sm\";\n return \"base\";\n }, []);\n\n const [breakpoint, setBreakpoint] = useState<Breakpoint>(getBreakpoint);\n\n useEffect(() => {\n const subscription = Dimensions.addEventListener(\"change\", ({ window }) => {\n const width = window.width;\n let next: Breakpoint = \"base\";\n if (width >= BREAKPOINTS[\"2xl\"]) next = \"2xl\";\n else if (width >= BREAKPOINTS.xl) next = \"xl\";\n else if (width >= BREAKPOINTS.lg) next = \"lg\";\n else if (width >= BREAKPOINTS.md) next = \"md\";\n else if (width >= BREAKPOINTS.sm) next = \"sm\";\n\n setBreakpoint((prev) => (prev !== next ? next : prev));\n });\n\n return () => subscription.remove();\n }, []);\n\n return breakpoint;\n}\n\n/**\n * Returns true if the current screen width is at or above the given breakpoint.\n *\n * ```tsx\n * const isTablet = useBreakpointValue(\"md\");\n * // true when screen ≥768px (tablet portrait and up)\n * ```\n */\nexport function useBreakpointValue(breakpoint: Exclude<Breakpoint, \"base\">): boolean {\n const current = useBreakpoint();\n const currentIndex = BREAKPOINT_ORDER.indexOf(current);\n const targetIndex = BREAKPOINT_ORDER.indexOf(breakpoint);\n return currentIndex >= targetIndex;\n}\n\n/**\n * Returns the current screen dimensions, updating on orientation/size changes.\n *\n * ```tsx\n * const { width, height } = useScreenDimensions();\n * ```\n */\nexport function useScreenDimensions(): { width: number; height: number } {\n const [dimensions, setDimensions] = useState(() => Dimensions.get(\"window\"));\n\n useEffect(() => {\n const subscription = Dimensions.addEventListener(\"change\", ({ window }) => {\n setDimensions(window);\n });\n return () => subscription.remove();\n }, []);\n\n return { width: dimensions.width, height: dimensions.height };\n}\n\nexport { BREAKPOINTS, BREAKPOINT_ORDER };\n","import React from \"react\";\nimport { View, type ViewProps, type ViewStyle } from \"react-native\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport type SpacingSize = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nexport interface StackProps extends ViewProps {\n /** Gap between children. Default uses space.layout.stack token (16px) */\n gap?: SpacingSize;\n /** Cross-axis alignment */\n align?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** Whether to take full width */\n fullWidth?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Stack — vertical flex layout primitive for React Native.\n *\n * Uses the `space.layout.stack` token (16px) as default gap.\n *\n * ```tsx\n * <Stack gap=\"lg\" align=\"center\">\n * <Button>First</Button>\n * <Button>Second</Button>\n * </Stack>\n * ```\n */\nexport function Stack({\n gap,\n align,\n fullWidth,\n style,\n children,\n ...rest\n}: StackProps) {\n const { baseTokens: bt } = useTheme();\n\n const gapValue = getGapValue(gap, bt);\n const alignMap: Record<string, ViewStyle[\"alignItems\"]> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n stretch: \"stretch\",\n };\n\n return (\n <View\n style={[\n { flexDirection: \"column\" as const },\n gapValue !== undefined && { gap: gapValue },\n gapValue === undefined && { gap: bt.entropixSpaceLayoutStack as number },\n align && { alignItems: alignMap[align] },\n fullWidth && { width: \"100%\" },\n style,\n ]}\n {...rest}\n >\n {children}\n </View>\n );\n}\n\nfunction getGapValue(\n gap: SpacingSize | undefined,\n bt: Record<string, unknown>,\n): number | undefined {\n if (!gap) return undefined;\n switch (gap) {\n case \"none\": return 0;\n case \"xs\": return bt.entropixSpacing1 as number;\n case \"sm\": return bt.entropixSpacing2 as number;\n case \"md\": return bt.entropixSpacing4 as number;\n case \"lg\": return bt.entropixSpacing6 as number;\n case \"xl\": return bt.entropixSpacing8 as number;\n case \"2xl\": return bt.entropixSpacing12 as number;\n }\n}\n","import React from \"react\";\nimport { View, type ViewProps, type ViewStyle } from \"react-native\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport type SpacingSize = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nexport interface InlineProps extends ViewProps {\n /** Gap between children. Default uses space.layout.inline token (12px) */\n gap?: SpacingSize;\n /** Cross-axis alignment */\n align?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n /** Main-axis justification */\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\";\n /** Whether to wrap children */\n wrap?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Inline — horizontal flex layout primitive for React Native.\n *\n * Uses the `space.layout.inline` token (12px) as default gap.\n *\n * ```tsx\n * <Inline gap=\"sm\" justify=\"between\" wrap>\n * <Button variant=\"primary\">Save</Button>\n * <Button variant=\"ghost\">Cancel</Button>\n * </Inline>\n * ```\n */\nexport function Inline({\n gap,\n align,\n justify,\n wrap,\n style,\n children,\n ...rest\n}: InlineProps) {\n const { baseTokens: bt } = useTheme();\n\n const gapValue = getGapValue(gap, bt);\n const alignMap: Record<string, ViewStyle[\"alignItems\"]> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n stretch: \"stretch\",\n baseline: \"baseline\",\n };\n const justifyMap: Record<string, ViewStyle[\"justifyContent\"]> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n between: \"space-between\",\n around: \"space-around\",\n };\n\n return (\n <View\n style={[\n {\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n },\n gapValue !== undefined && { gap: gapValue },\n gapValue === undefined && { gap: bt.entropixSpaceLayoutInline as number },\n align && { alignItems: alignMap[align] },\n justify && { justifyContent: justifyMap[justify] },\n wrap && { flexWrap: \"wrap\" as const },\n style,\n ]}\n {...rest}\n >\n {children}\n </View>\n );\n}\n\nfunction getGapValue(\n gap: SpacingSize | undefined,\n bt: Record<string, unknown>,\n): number | undefined {\n if (!gap) return undefined;\n switch (gap) {\n case \"none\": return 0;\n case \"xs\": return bt.entropixSpacing1 as number;\n case \"sm\": return bt.entropixSpacing2 as number;\n case \"md\": return bt.entropixSpacing4 as number;\n case \"lg\": return bt.entropixSpacing6 as number;\n case \"xl\": return bt.entropixSpacing8 as number;\n case \"2xl\": return bt.entropixSpacing12 as number;\n }\n}\n","import React from \"react\";\nimport { View, type ViewProps, type ViewStyle } from \"react-native\";\nimport { useTheme } from \"../../theme/theme-context.js\";\nimport { useBreakpoint } from \"../../utils/use-breakpoint.js\";\n\nexport type ContainerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface ContainerProps extends ViewProps {\n /** Maximum width constraint. Default: \"lg\" (1024px). On mobile this mainly affects tablet/web. */\n maxWidth?: ContainerSize;\n /** Whether to center children horizontally */\n center?: boolean;\n children?: React.ReactNode;\n}\n\nconst maxWidthMap: Record<ContainerSize, number | undefined> = {\n xs: 480,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n full: undefined,\n};\n\n/**\n * Container — responsive page-level wrapper with adaptive horizontal padding.\n *\n * Padding scales with screen size using breakpoint tokens:\n * - Mobile (<768px): `space.layout.page-margin` (24px)\n * - Tablet (≥768px): `space.layout.page-margin-md` (32px)\n * - Desktop (≥1024px): `space.layout.page-margin-lg` (40px)\n *\n * ```tsx\n * <Container maxWidth=\"lg\">\n * <Stack gap=\"xl\">\n * <Text>Page content</Text>\n * </Stack>\n * </Container>\n * ```\n */\nexport function Container({\n maxWidth = \"lg\",\n center,\n style,\n children,\n ...rest\n}: ContainerProps) {\n const { baseTokens: bt } = useTheme();\n const breakpoint = useBreakpoint();\n\n const maxW = maxWidthMap[maxWidth];\n\n // Responsive page margin: scales up at tablet and desktop breakpoints\n let pageMargin = bt.entropixSpaceLayoutPageMargin as number;\n if (breakpoint === \"lg\" || breakpoint === \"xl\" || breakpoint === \"2xl\") {\n pageMargin = bt.entropixSpaceLayoutPageMarginLg as number;\n } else if (breakpoint === \"md\") {\n pageMargin = bt.entropixSpaceLayoutPageMarginMd as number;\n }\n\n return (\n <View\n style={[\n {\n width: \"100%\",\n paddingHorizontal: pageMargin,\n } as ViewStyle,\n maxW !== undefined && { maxWidth: maxW, alignSelf: \"center\" as const },\n center && { alignItems: \"center\" as const },\n style,\n ]}\n {...rest}\n >\n {children}\n </View>\n );\n}\n","import React from \"react\";\nimport { View, type ViewProps, type ViewStyle } from \"react-native\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DividerProps extends ViewProps {\n /** Orientation of the divider */\n orientation?: \"horizontal\" | \"vertical\";\n /** Spacing above and below (or left and right for vertical) */\n spacing?: \"sm\" | \"md\" | \"lg\";\n}\n\n/**\n * Divider — visual separator line for React Native.\n *\n * Uses the `color.border.default` token for line color.\n *\n * ```tsx\n * <Stack>\n * <Text>Section A</Text>\n * <Divider spacing=\"md\" />\n * <Text>Section B</Text>\n * </Stack>\n *\n * <Inline>\n * <Text>Left</Text>\n * <Divider orientation=\"vertical\" spacing=\"sm\" />\n * <Text>Right</Text>\n * </Inline>\n * ```\n */\nexport function Divider({\n orientation = \"horizontal\",\n spacing,\n style,\n ...rest\n}: DividerProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const spacingMap: Record<string, number> = {\n sm: bt.entropixSpacing2 as number,\n md: bt.entropixSpacing4 as number,\n lg: bt.entropixSpacing6 as number,\n };\n\n const spacingValue = spacing ? spacingMap[spacing] : 0;\n\n const isVertical = orientation === \"vertical\";\n\n const dividerStyle: ViewStyle = isVertical\n ? {\n width: 1,\n alignSelf: \"stretch\",\n backgroundColor: t.entropixColorBorderDefault as string,\n marginHorizontal: spacingValue,\n }\n : {\n height: 1,\n width: \"100%\",\n backgroundColor: t.entropixColorBorderDefault as string,\n marginVertical: spacingValue,\n };\n\n return (\n <View\n accessibilityRole={isVertical ? \"none\" : undefined}\n style={[dividerStyle, style]}\n {...rest}\n />\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/theme/theme-context.tsx","../src/utils/map-accessibility-to-rn.ts","../src/components/button.tsx","../src/components/toggle.tsx","../src/components/switch.tsx","../src/components/dialog/dialog-context.tsx","../src/components/dialog/dialog.tsx","../src/components/dialog/dialog-trigger.tsx","../src/components/dialog/dialog-content.tsx","../src/components/dialog/dialog-title.tsx","../src/components/dialog/dialog-description.tsx","../src/components/dialog/dialog-close.tsx","../src/components/dialog/dialog-overlay.tsx","../src/components/tabs/tabs-context.tsx","../src/components/tabs/tabs.tsx","../src/components/tabs/tab-list.tsx","../src/components/tabs/tab.tsx","../src/components/tabs/tab-panel.tsx","../src/components/accordion/accordion-context.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-trigger.tsx","../src/components/accordion/accordion-panel.tsx","../src/components/menu/menu-context.tsx","../src/components/menu/menu.tsx","../src/components/menu/menu-trigger.tsx","../src/components/menu/menu-content.tsx","../src/utils/wrap-string-children.tsx","../src/components/menu/menu-item.tsx","../src/components/input.tsx","../src/components/textarea.tsx","../src/components/checkbox.tsx","../src/components/radio/radio-context.tsx","../src/components/radio/radio-group.tsx","../src/components/radio/radio-item.tsx","../src/components/select/select-context.tsx","../src/components/select/select.tsx","../src/components/select/select-trigger.tsx","../src/components/select/select-content.tsx","../src/components/select/select-option.tsx","../src/utils/use-breakpoint.ts","../src/components/layout/stack.tsx","../src/components/layout/inline.tsx","../src/components/layout/container.tsx","../src/components/layout/divider.tsx"],"names":["createContext","lightTokens","baseTokens","useMemo","darkTokens","jsx","useContext","useButton","useCallback","Pressable","Text","useToggle","useRef","Animated","useEffect","useDialog","Modal","View","StyleSheet","useTabs","useAccordion","jsxs","useMenu","useInput","TextInput","getSizeStyles","useRadioGroup","useSelect","Dimensions","useState","getGapValue"],"mappings":"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","file":"index.cjs","sourcesContent":["import React, { createContext, useContext, useMemo } from \"react\";\nimport { tokens as baseTokens } from \"@entropix/tokens/native\";\nimport { tokens as lightTokens } from \"@entropix/tokens/native/light\";\nimport { tokens as darkTokens } from \"@entropix/tokens/native/dark\";\n\nexport type EntropixTheme = typeof lightTokens;\nexport type ThemeMode = \"light\" | \"dark\";\n\ninterface ThemeContextValue {\n mode: ThemeMode;\n tokens: EntropixTheme;\n baseTokens: typeof baseTokens;\n}\n\nconst ThemeContext = createContext<ThemeContextValue>({\n mode: \"light\",\n tokens: lightTokens,\n baseTokens,\n});\n\nexport interface EntropixProviderProps {\n /** Theme mode: \"light\" or \"dark\". Default: \"light\" */\n mode?: ThemeMode;\n children: React.ReactNode;\n}\n\n/**\n * EntropixProvider — Provides theme tokens to all Entropix components.\n *\n * Wrap your app root with this provider. All Entropix components will\n * automatically pick up the current theme tokens.\n *\n * ```tsx\n * <EntropixProvider mode=\"dark\">\n * <App />\n * </EntropixProvider>\n * ```\n */\nexport function EntropixProvider({\n mode = \"light\",\n children,\n}: EntropixProviderProps) {\n const value = useMemo<ThemeContextValue>(\n () => ({\n mode,\n tokens: mode === \"dark\" ? darkTokens : lightTokens,\n baseTokens,\n }),\n [mode]\n );\n\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n}\n\n/**\n * useTheme — Access current Entropix theme tokens.\n *\n * Returns the resolved token values for the current theme (light or dark).\n * Must be used within an EntropixProvider.\n */\nexport function useTheme(): ThemeContextValue {\n return useContext(ThemeContext);\n}\n","import type { AccessibilityProps, AriaRole } from \"@entropix/core\";\nimport type { AccessibilityRole, AccessibilityState } from \"react-native\";\nimport type { RNAccessibilityProps } from \"./types.js\";\n\n/**\n * Maps core AriaRole values to React Native AccessibilityRole equivalents.\n * Some roles have no direct RN equivalent and use the closest match.\n */\nconst RN_ROLE_MAP: Partial<Record<AriaRole, AccessibilityRole>> = {\n button: \"button\",\n checkbox: \"checkbox\",\n switch: \"switch\",\n dialog: \"none\", // Modal component handles dialog semantics\n alertdialog: \"alert\",\n link: \"link\",\n tab: \"tab\",\n tablist: \"tablist\",\n menu: \"menu\",\n menuitem: \"menuitem\",\n radio: \"radio\",\n radiogroup: \"radiogroup\",\n slider: \"adjustable\",\n spinbutton: \"spinbutton\",\n textbox: \"text\",\n combobox: \"combobox\",\n progressbar: \"progressbar\",\n alert: \"alert\",\n status: \"text\",\n tooltip: \"text\",\n none: \"none\",\n presentation: \"none\",\n};\n\n/**\n * Maps platform-neutral AccessibilityProps from @entropix/core\n * to React Native accessibility props.\n *\n * Key differences from the web adapter:\n * - Boolean states aggregated into accessibilityState object\n * - Value props aggregated into accessibilityValue object\n * - describedBy maps to accessibilityHint (closest RN equivalent)\n * - hidden maps to both iOS (accessibilityElementsHidden) and Android (importantForAccessibility)\n * - modal, hasPopup, controls, owns, tabIndex, pressed are silently dropped (no RN equivalent)\n */\nexport function mapAccessibilityToRN(\n props: AccessibilityProps,\n): RNAccessibilityProps {\n const result: RNAccessibilityProps = { accessible: true };\n\n // Role mapping\n if (props.role) {\n result.accessibilityRole =\n RN_ROLE_MAP[props.role] ?? (props.role as AccessibilityRole);\n }\n\n // Label\n if (props.label) {\n result.accessibilityLabel = props.label;\n }\n\n // Hint (describedBy → accessibilityHint)\n if (props.describedBy) {\n result.accessibilityHint = props.describedBy;\n }\n\n // LabelledBy (RN 0.71+)\n if (props.labelledBy) {\n result.accessibilityLabelledBy = props.labelledBy;\n }\n\n // Aggregate boolean states into accessibilityState\n const state: AccessibilityState = {};\n let hasState = false;\n\n if (props.disabled !== undefined) {\n state.disabled = props.disabled;\n hasState = true;\n }\n if (props.expanded !== undefined) {\n state.expanded = props.expanded;\n hasState = true;\n }\n if (props.selected !== undefined) {\n state.selected = props.selected;\n hasState = true;\n }\n if (props.checked !== undefined) {\n state.checked = props.checked;\n hasState = true;\n }\n if (props.busy !== undefined) {\n state.busy = props.busy;\n hasState = true;\n }\n // Note: props.pressed not supported by RN AccessibilityState\n\n if (hasState) {\n result.accessibilityState = state;\n }\n\n // Aggregate value props into accessibilityValue\n if (\n props.valueNow !== undefined ||\n props.valueMin !== undefined ||\n props.valueMax !== undefined ||\n props.valueText !== undefined\n ) {\n result.accessibilityValue = {};\n if (props.valueNow !== undefined)\n result.accessibilityValue.now = props.valueNow;\n if (props.valueMin !== undefined)\n result.accessibilityValue.min = props.valueMin;\n if (props.valueMax !== undefined)\n result.accessibilityValue.max = props.valueMax;\n if (props.valueText !== undefined)\n result.accessibilityValue.text = props.valueText;\n }\n\n // Live region\n if (props.live) {\n result.accessibilityLiveRegion =\n props.live === \"off\" ? \"none\" : props.live;\n }\n\n // Hidden — dual platform coverage (iOS + Android)\n if (props.hidden) {\n result.accessibilityElementsHidden = true;\n result.importantForAccessibility = \"no-hide-descendants\";\n }\n\n // Required and invalid — no direct RN state equivalents.\n // Silently dropped (component layers can handle via labels or hints).\n // required (no RN AccessibilityState equivalent)\n // invalid (no RN AccessibilityState equivalent)\n\n // Silently dropped — no RN equivalent:\n // modal (handled by <Modal> component)\n // hasPopup, controls, owns (not supported in RN)\n // tabIndex (not applicable in RN)\n // pressed (not in RN AccessibilityState)\n\n return result;\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useButton } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../theme/theme-context.js\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** Called when the button is pressed */\n onPress?: () => void;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Whether the button is in a loading state */\n loading?: boolean;\n /** Visual variant. Default: \"primary\" */\n variant?: ButtonVariant;\n /** Size. Default: \"md\" */\n size?: ButtonSize;\n /** Override container style */\n style?: StyleProp<ViewStyle>;\n /** Override label text style */\n textStyle?: TextStyle;\n children?: React.ReactNode;\n}\n\n/**\n * Button — styled React Native button with variant and size support.\n *\n * ```tsx\n * <Button variant=\"primary\" size=\"md\" onPress={handlePress}>\n * Save Changes\n * </Button>\n * ```\n */\nexport function Button({\n onPress,\n disabled,\n loading,\n variant = \"primary\",\n size = \"md\",\n style,\n textStyle,\n children,\n ...rest\n}: ButtonProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const { isDisabled, isLoading, getButtonProps } = useButton({\n disabled,\n loading,\n onPress,\n elementType: \"div\",\n });\n\n const propGetterReturn = getButtonProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n const sizeStyles = getSizeStyle(size, bt);\n const variantStyles = getVariantStyle(variant, t);\n const labelColor = getVariantTextColor(variant, t);\n const isInactive = isDisabled || isLoading;\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={isInactive}\n onPress={isInactive ? undefined : handlePress}\n style={[\n baseStyle,\n sizeStyles.container,\n variantStyles,\n isInactive && { opacity: 0.5 },\n style,\n ]}\n >\n {typeof children === \"string\" ? (\n <Text\n style={[\n { color: labelColor, fontSize: sizeStyles.fontSize, fontWeight: \"500\" },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Pressable>\n );\n}\n\nconst baseStyle: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n};\n\nfunction getSizeStyle(size: ButtonSize, bt: Record<string, unknown>) {\n switch (size) {\n case \"sm\":\n return {\n container: {\n paddingVertical: bt.entropixSpacing1 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n borderRadius: bt.entropixRadiusSm as number,\n gap: bt.entropixButtonGap as number,\n } as ViewStyle,\n fontSize: bt.entropixFontSizeXs as number,\n };\n case \"lg\":\n return {\n container: {\n paddingVertical: bt.entropixSpacing3 as number,\n paddingHorizontal: bt.entropixSpacing6 as number,\n borderRadius: bt.entropixRadiusLg as number,\n gap: bt.entropixButtonGap as number,\n } as ViewStyle,\n fontSize: bt.entropixFontSizeBase as number,\n };\n default:\n return {\n container: {\n paddingVertical: bt.entropixButtonPaddingY as number,\n paddingHorizontal: bt.entropixButtonPaddingX as number,\n borderRadius: bt.entropixButtonBorderRadius as number,\n gap: bt.entropixButtonGap as number,\n } as ViewStyle,\n fontSize: bt.entropixButtonFontSize as number,\n };\n }\n}\n\nfunction getVariantStyle(variant: ButtonVariant, t: Record<string, unknown>): ViewStyle {\n switch (variant) {\n case \"primary\":\n return { backgroundColor: t.entropixButtonPrimaryBg as string, borderWidth: 1, borderColor: t.entropixButtonPrimaryBorder as string };\n case \"secondary\":\n return { backgroundColor: t.entropixButtonSecondaryBg as string, borderWidth: 1, borderColor: t.entropixButtonSecondaryBorder as string };\n case \"outline\":\n return { backgroundColor: \"transparent\", borderWidth: 1, borderColor: t.entropixColorBorderDefault as string };\n case \"ghost\":\n return { backgroundColor: \"transparent\", borderWidth: 1, borderColor: \"transparent\" };\n case \"danger\":\n return { backgroundColor: t.entropixButtonDangerBg as string, borderWidth: 1, borderColor: t.entropixButtonDangerBorder as string };\n }\n}\n\nfunction getVariantTextColor(variant: ButtonVariant, t: Record<string, unknown>): string {\n switch (variant) {\n case \"primary\": return t.entropixButtonPrimaryText as string;\n case \"secondary\": return t.entropixButtonSecondaryText as string;\n case \"outline\":\n case \"ghost\": return t.entropixColorTextPrimary as string;\n case \"danger\": return t.entropixButtonDangerText as string;\n }\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useToggle, type UseToggleOptions } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../theme/theme-context.js\";\n\nexport interface ToggleProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** Controlled checked state */\n checked?: boolean;\n /** Default checked state for uncontrolled mode */\n defaultChecked?: boolean;\n /** Called when checked state changes */\n onChange?: (checked: boolean) => void;\n /** Whether the toggle is disabled */\n disabled?: boolean;\n /** Accessible label */\n label?: string;\n /** Override container style */\n style?: StyleProp<ViewStyle>;\n /** Override label text style */\n textStyle?: TextStyle;\n children?: React.ReactNode;\n}\n\n/** Internal props used by Switch to override the role */\ninterface ToggleInternalProps extends ToggleProps {\n /** @internal Override the ARIA role */\n role?: UseToggleOptions[\"role\"];\n}\n\n/**\n * Toggle — styled checkbox toggle.\n *\n * Renders as a bordered pill that fills blue when checked.\n *\n * ```tsx\n * <Toggle onChange={setChecked}>Accept Terms</Toggle>\n * ```\n */\nexport function Toggle(props: ToggleProps) {\n return <ToggleInner {...props} role=\"checkbox\" />;\n}\n\n/** @internal Shared implementation for Toggle and Switch */\nexport function ToggleInner({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n role = \"checkbox\",\n style,\n textStyle,\n children,\n ...rest\n}: ToggleInternalProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const { isDisabled, getToggleProps } = useToggle({\n checked,\n defaultChecked,\n onChange,\n disabled,\n role,\n });\n\n const propGetterReturn = getToggleProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const isChecked = propGetterReturn.accessibility.checked === true;\n\n if (label) {\n rnAccessibility.accessibilityLabel = label;\n }\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={isDisabled}\n onPress={isDisabled ? undefined : handlePress}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n borderWidth: 1,\n borderColor: isChecked ? \"transparent\" : (t.entropixColorBorderDefault as string),\n borderRadius: bt.entropixRadiusMd as number,\n backgroundColor: isChecked\n ? (t.entropixColorActionPrimaryDefault as string)\n : (t.entropixColorBgPrimary as string),\n },\n isDisabled && { opacity: 0.5 },\n style,\n ]}\n >\n {typeof children === \"string\" ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: isChecked\n ? (t.entropixColorTextInverse as string)\n : (t.entropixColorTextPrimary as string),\n },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : children != null ? (\n children\n ) : (\n <Text\n style={{\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: isChecked\n ? (t.entropixColorTextInverse as string)\n : (t.entropixColorTextPrimary as string),\n }}\n >\n {isChecked ? \"On\" : \"Off\"}\n </Text>\n )}\n </Pressable>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport {\n Animated,\n Pressable,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useToggle } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../theme/theme-context.js\";\n\nconst TRACK_WIDTH = 44;\nconst TRACK_HEIGHT = 24;\nconst TRACK_PADDING = 2;\nconst THUMB_SIZE = TRACK_HEIGHT - TRACK_PADDING * 2; // 20\nconst THUMB_TRAVEL = TRACK_WIDTH - TRACK_PADDING * 2 - THUMB_SIZE; // 20\n\nexport interface SwitchProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** Controlled checked state */\n checked?: boolean;\n /** Default checked state for uncontrolled mode */\n defaultChecked?: boolean;\n /** Called when checked state changes */\n onChange?: (checked: boolean) => void;\n /** Whether the switch is disabled */\n disabled?: boolean;\n /** Accessible label */\n label?: string;\n /** Override track style */\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * Switch — styled toggle with track + sliding thumb.\n *\n * ```tsx\n * <Switch checked={isOn} onChange={setIsOn} label=\"Notifications\" />\n * ```\n */\nexport function Switch({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n style,\n ...rest\n}: SwitchProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const { isDisabled, getToggleProps } = useToggle({\n checked,\n defaultChecked,\n onChange,\n disabled,\n role: \"switch\",\n });\n\n const propGetterReturn = getToggleProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const isChecked = propGetterReturn.accessibility.checked === true;\n\n if (label) {\n rnAccessibility.accessibilityLabel = label;\n }\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n // Animated thumb position\n const thumbAnim = useRef(\n new Animated.Value(defaultChecked || checked ? THUMB_TRAVEL : 0)\n ).current;\n\n useEffect(() => {\n Animated.timing(thumbAnim, {\n toValue: isChecked ? THUMB_TRAVEL : 0,\n duration: 150,\n useNativeDriver: false,\n }).start();\n }, [isChecked, thumbAnim]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={isDisabled}\n onPress={isDisabled ? undefined : handlePress}\n style={[\n {\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: bt.entropixRadiusFull as number,\n backgroundColor: isChecked\n ? (t.entropixColorActionPrimaryDefault as string)\n : (t.entropixColorGray300 as string),\n padding: TRACK_PADDING,\n justifyContent: \"center\",\n },\n isDisabled && { opacity: 0.5 },\n style,\n ]}\n >\n <Animated.View\n style={{\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: bt.entropixRadiusFull as number,\n backgroundColor: t.entropixColorWhite as string,\n transform: [{ translateX: thumbAnim }],\n }}\n />\n </Pressable>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseDialogReturn } from \"@entropix/core\";\n\nexport const DialogContext = createContext<UseDialogReturn | null>(null);\n\n/**\n * Hook to access the nearest Dialog context.\n * Throws if used outside a <Dialog> component.\n */\nexport function useDialogContext(): UseDialogReturn {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error(\n \"Dialog compound components must be used within a <Dialog> provider.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { useDialog, type UseDialogOptions } from \"@entropix/core\";\nimport { DialogContext } from \"./dialog-context.js\";\n\nexport interface DialogProps extends UseDialogOptions {\n children: React.ReactNode;\n}\n\n/**\n * Dialog root — provides dialog state to compound sub-components.\n * Renders no UI of its own.\n */\nexport function Dialog({\n children,\n isOpen,\n defaultOpen,\n onOpenChange,\n closeOnOverlayPress,\n closeOnEscape,\n modal,\n role,\n}: DialogProps) {\n const dialog = useDialog({\n isOpen,\n defaultOpen,\n onOpenChange,\n closeOnOverlayPress,\n closeOnEscape,\n modal,\n role,\n });\n\n return (\n <DialogContext.Provider value={dialog}>{children}</DialogContext.Provider>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\n\nexport interface DialogTriggerProps\n extends Omit<PressableProps, \"onPress\" | \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * DialogTrigger — Pressable that opens/closes the dialog.\n */\nexport function DialogTrigger({\n children,\n style,\n ...rest\n}: DialogTriggerProps) {\n const { getTriggerProps } = useDialogContext();\n const propGetterReturn = getTriggerProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={handlePress}\n style={style}\n >\n {children}\n </Pressable>\n );\n}\n","import React from \"react\";\nimport {\n Modal,\n View,\n type ViewProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DialogContentProps extends Omit<ViewProps, \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n /** Style for the inner card. */\n cardStyle?: StyleProp<ViewStyle>;\n /** Modal animation type. Default: \"fade\" */\n animationType?: \"none\" | \"slide\" | \"fade\";\n /** Whether the modal background is transparent. Default: true */\n transparent?: boolean;\n}\n\n/**\n * DialogContent — wraps children in RN's Modal component.\n *\n * Modal provides native focus trapping for screen readers.\n * onRequestClose handles Android back button (maps to core's \"dismiss\" intent).\n */\nexport function DialogContent({\n children,\n style,\n cardStyle,\n animationType = \"fade\",\n transparent = true,\n ...rest\n}: DialogContentProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { isOpen, close, ids, getContentProps } = useDialogContext();\n const propGetterReturn = getContentProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n return (\n <Modal\n visible={isOpen}\n transparent={transparent}\n animationType={animationType}\n onRequestClose={close}\n supportedOrientations={[\"portrait\", \"landscape\"]}\n >\n <View\n {...rest}\n style={[\n {\n flex: 1,\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n },\n style,\n ]}\n >\n <View\n {...rnAccessibility}\n nativeID={ids.content}\n style={[\n {\n backgroundColor: t.entropixColorBgPrimary as string,\n borderRadius: bt.entropixRadiusLg as number,\n padding: bt.entropixSpacing6 as number,\n width: \"90%\",\n maxWidth: 480,\n shadowColor: \"#000\",\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.15,\n shadowRadius: 12,\n elevation: 8,\n },\n cardStyle,\n ]}\n >\n {children}\n </View>\n </View>\n </Modal>\n );\n}\n","import React from \"react\";\nimport { Text, type TextProps, type StyleProp, type TextStyle } from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DialogTitleProps extends Omit<TextProps, \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<TextStyle>;\n}\n\n/**\n * DialogTitle — Text element with nativeID for accessibility linking.\n * Uses accessibilityRole=\"header\" for screen reader heading semantics.\n */\nexport function DialogTitle({ children, style, ...rest }: DialogTitleProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { ids } = useDialogContext();\n\n return (\n <Text\n {...rest}\n nativeID={ids.title}\n style={[\n {\n fontSize: 18,\n fontWeight: \"600\",\n color: t.entropixColorTextPrimary as string,\n marginBottom: bt.entropixSpacing2 as number,\n },\n style,\n ]}\n accessibilityRole=\"header\"\n >\n {children}\n </Text>\n );\n}\n","import React from \"react\";\nimport { Text, type TextProps, type StyleProp, type TextStyle } from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DialogDescriptionProps extends Omit<TextProps, \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<TextStyle>;\n}\n\n/**\n * DialogDescription — Text element with nativeID for accessibility linking.\n */\nexport function DialogDescription({\n children,\n style,\n ...rest\n}: DialogDescriptionProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { ids } = useDialogContext();\n\n return (\n <Text\n {...rest}\n nativeID={ids.description}\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n color: t.entropixColorTextSecondary as string,\n lineHeight: 20,\n marginBottom: bt.entropixSpacing4 as number,\n },\n style,\n ]}\n >\n {children}\n </Text>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DialogCloseProps\n extends Omit<PressableProps, \"onPress\" | \"style\"> {\n children?: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * DialogClose — Pressable that closes the dialog.\n * Renders as a positioned \"✕\" button by default if no children provided.\n */\nexport function DialogClose({ children, style, ...rest }: DialogCloseProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getCloseProps } = useDialogContext();\n const propGetterReturn = getCloseProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={handlePress}\n style={[\n {\n position: \"absolute\",\n top: bt.entropixSpacing3 as number,\n right: bt.entropixSpacing3 as number,\n width: 32,\n height: 32,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: bt.entropixRadiusSm as number,\n },\n style,\n ]}\n accessibilityRole=\"button\"\n >\n {children ?? (\n <Text\n style={{\n fontSize: 16,\n color: t.entropixColorTextSecondary as string,\n }}\n >\n ✕\n </Text>\n )}\n </Pressable>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useDialogContext } from \"./dialog-context.js\";\n\nexport interface DialogOverlayProps {\n style?: StyleProp<ViewStyle>;\n testID?: string;\n}\n\n/**\n * DialogOverlay — backdrop element behind dialog content.\n * Note: With the self-styled DialogContent, the overlay is built into the\n * Modal wrapper. This component is kept for consumers who need a separate\n * overlay element (e.g., custom dismiss-on-tap behavior outside DialogContent).\n */\nexport function DialogOverlay({ style, testID }: DialogOverlayProps) {\n const { isOpen, getOverlayProps } = useDialogContext();\n const propGetterReturn = getOverlayProps();\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n if (!isOpen) return null;\n\n return (\n <Pressable\n testID={testID}\n accessible={false}\n importantForAccessibility=\"no\"\n onPress={propGetterReturn.onAction ? handlePress : undefined}\n style={[\n {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n },\n style,\n ]}\n />\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseTabsReturn } from \"@entropix/core\";\n\nexport const TabsContext = createContext<UseTabsReturn | null>(null);\n\nexport function useTabsContext(): UseTabsReturn {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\n \"Tabs compound components must be used within a <Tabs> provider.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useTabs, type UseTabsOptions } from \"@entropix/core\";\nimport { TabsContext } from \"./tabs-context.js\";\n\nexport interface TabsProps extends UseTabsOptions {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function Tabs({ children, style, ...options }: TabsProps) {\n const tabs = useTabs(options);\n\n return (\n <TabsContext.Provider value={tabs}>\n <View style={style}>{children}</View>\n </TabsContext.Provider>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useTabsContext } from \"./tabs-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface TabListProps {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function TabList({ children, style }: TabListProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getTabListProps } = useTabsContext();\n const propGetterReturn = getTabListProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n return (\n <View\n {...rnAccessibility}\n style={[\n {\n flexDirection: \"row\",\n gap: bt.entropixSpacing1 as number,\n borderBottomWidth: 1,\n borderBottomColor: t.entropixColorBorderDefault as string,\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useTabsContext } from \"./tabs-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface TabProps extends Omit<PressableProps, \"onPress\" | \"style\" | \"children\"> {\n value: string;\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: TextStyle;\n}\n\nexport function Tab({ value, children, style, textStyle, ...rest }: TabProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getTabProps, selectedKey } = useTabsContext();\n const propGetterReturn = getTabProps(value);\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const isActive = selectedKey === value;\n const isDisabled = propGetterReturn.accessibility.disabled === true;\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={propGetterReturn.onAction ? handlePress : undefined}\n style={[\n {\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing4 as number,\n borderBottomWidth: 2,\n borderBottomColor: isActive\n ? (t.entropixColorActionPrimaryDefault as string)\n : \"transparent\",\n },\n isDisabled && { opacity: 0.5 },\n style,\n ]}\n >\n {typeof children === \"string\" ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: isActive\n ? (t.entropixColorActionPrimaryDefault as string)\n : (t.entropixColorTextSecondary as string),\n },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Pressable>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useTabsContext } from \"./tabs-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface TabPanelProps {\n value: string;\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function TabPanel({ value, children, style }: TabPanelProps) {\n const { baseTokens: bt } = useTheme();\n const { getTabPanelProps, selectedKey } = useTabsContext();\n const propGetterReturn = getTabPanelProps(value);\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n if (selectedKey !== value) return null;\n\n return (\n <View\n {...rnAccessibility}\n style={[{ padding: bt.entropixSpacing4 as number }, style]}\n >\n {children}\n </View>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseAccordionReturn } from \"@entropix/core\";\n\nexport const AccordionContext = createContext<UseAccordionReturn | null>(null);\n\nexport function useAccordionContext(): UseAccordionReturn {\n const context = useContext(AccordionContext);\n if (!context) {\n throw new Error(\n \"Accordion compound components must be used within an <Accordion> provider.\",\n );\n }\n return context;\n}\n\nexport const AccordionItemContext = createContext<string | null>(null);\n\nexport function useAccordionItemContext(): string {\n const context = useContext(AccordionItemContext);\n if (context === null) {\n throw new Error(\n \"AccordionTrigger and AccordionPanel must be used within an <AccordionItem>.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useAccordion, type UseAccordionOptions } from \"@entropix/core\";\nimport { AccordionContext } from \"./accordion-context.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface AccordionProps extends UseAccordionOptions {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function Accordion({ children, style, ...options }: AccordionProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const accordion = useAccordion(options);\n\n return (\n <AccordionContext.Provider value={accordion}>\n <View\n style={[\n {\n borderWidth: 1,\n borderColor: t.entropixColorBorderDefault as string,\n borderRadius: bt.entropixRadiusLg as number,\n overflow: \"hidden\",\n },\n style,\n ]}\n >\n {children}\n </View>\n </AccordionContext.Provider>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { AccordionItemContext } from \"./accordion-context.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface AccordionItemProps {\n value: string;\n /** Whether this is the last item (hides bottom border). Auto-detected if omitted. */\n isLast?: boolean;\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function AccordionItem({\n value,\n isLast = false,\n children,\n style,\n}: AccordionItemProps) {\n const { tokens: t } = useTheme();\n\n return (\n <AccordionItemContext.Provider value={value}>\n <View\n style={[\n {\n borderBottomWidth: isLast ? 0 : 1,\n borderBottomColor: t.entropixColorBorderDefault as string,\n },\n style,\n ]}\n >\n {children}\n </View>\n </AccordionItemContext.Provider>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport {\n useAccordionContext,\n useAccordionItemContext,\n} from \"./accordion-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface AccordionTriggerProps\n extends Omit<PressableProps, \"onPress\" | \"style\" | \"children\"> {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: TextStyle;\n}\n\nexport function AccordionTrigger({\n children,\n style,\n textStyle,\n ...rest\n}: AccordionTriggerProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const itemKey = useAccordionItemContext();\n const { getItemTriggerProps, isExpanded } = useAccordionContext();\n const propGetterReturn = getItemTriggerProps(itemKey);\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const expanded = isExpanded(itemKey);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={propGetterReturn.onAction ? handlePress : undefined}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingVertical: bt.entropixSpacing4 as number,\n paddingHorizontal: bt.entropixSpacing4 as number,\n },\n style,\n ]}\n >\n {typeof children === \"string\" ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: t.entropixColorTextPrimary as string,\n flex: 1,\n },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n <Text\n style={{\n fontSize: 12,\n color: t.entropixColorTextSecondary as string,\n marginLeft: bt.entropixSpacing2 as number,\n }}\n >\n {expanded ? \"−\" : \"+\"}\n </Text>\n </Pressable>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport {\n useAccordionContext,\n useAccordionItemContext,\n} from \"./accordion-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface AccordionPanelProps {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function AccordionPanel({ children, style }: AccordionPanelProps) {\n const { baseTokens: bt } = useTheme();\n const itemKey = useAccordionItemContext();\n const { getItemPanelProps, isExpanded } = useAccordionContext();\n const propGetterReturn = getItemPanelProps(itemKey);\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n if (!isExpanded(itemKey)) return null;\n\n return (\n <View\n {...rnAccessibility}\n style={[\n {\n paddingHorizontal: bt.entropixSpacing4 as number,\n paddingBottom: bt.entropixSpacing4 as number,\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseMenuReturn } from \"@entropix/core\";\n\nexport const MenuContext = createContext<UseMenuReturn | null>(null);\n\nexport function useMenuContext(): UseMenuReturn {\n const context = useContext(MenuContext);\n if (!context) {\n throw new Error(\n \"Menu compound components must be used within a <Menu> provider.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { useMenu, type UseMenuOptions } from \"@entropix/core\";\nimport { MenuContext } from \"./menu-context.js\";\n\nexport interface MenuProps extends UseMenuOptions {\n children: React.ReactNode;\n}\n\nexport function Menu({ children, ...options }: MenuProps) {\n const menu = useMenu(options);\n\n return (\n <MenuContext.Provider value={menu}>{children}</MenuContext.Provider>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { useMenuContext } from \"./menu-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\n\nexport interface MenuTriggerProps\n extends Omit<PressableProps, \"onPress\" | \"style\"> {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function MenuTrigger({ children, style, ...rest }: MenuTriggerProps) {\n const { getTriggerProps } = useMenuContext();\n const propGetterReturn = getTriggerProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n onPress={handlePress}\n style={style}\n >\n {children}\n </Pressable>\n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle, type StyleProp } from \"react-native\";\nimport { useMenuContext } from \"./menu-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface MenuContentProps {\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n}\n\nexport function MenuContent({ children, style, testID }: MenuContentProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { isOpen, getMenuProps } = useMenuContext();\n const propGetterReturn = getMenuProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n if (!isOpen) return null;\n\n return (\n <View\n {...rnAccessibility}\n testID={testID}\n style={[\n {\n minWidth: 160,\n padding: bt.entropixSpacing1 as number,\n backgroundColor: t.entropixColorBgPrimary as string,\n borderWidth: 1,\n borderColor: t.entropixColorBorderDefault as string,\n borderRadius: bt.entropixRadiusMd as number,\n shadowColor: \"#000\",\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.1,\n shadowRadius: 8,\n elevation: 4,\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n}\n","import React from \"react\";\nimport { Text, type TextStyle } from \"react-native\";\n\n/**\n * Wraps raw string/number children in a <Text> component.\n *\n * In React Native, strings cannot be rendered directly inside\n * View or Pressable — they must be inside a <Text> element.\n * React elements are passed through unchanged.\n */\nexport function wrapStringChildren(\n children: React.ReactNode,\n style?: TextStyle,\n): React.ReactNode {\n if (typeof children === \"string\" || typeof children === \"number\") {\n return <Text style={style}>{children}</Text>;\n }\n return children;\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useMenuContext } from \"./menu-context.js\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { wrapStringChildren } from \"../../utils/wrap-string-children.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface MenuItemProps\n extends Omit<PressableProps, \"onPress\" | \"disabled\" | \"style\"> {\n index: number;\n onSelect?: () => void;\n disabled?: boolean;\n children: React.ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: TextStyle;\n}\n\nexport function MenuItem({\n index,\n onSelect,\n disabled,\n children,\n style,\n textStyle,\n ...rest\n}: MenuItemProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getItemProps } = useMenuContext();\n const propGetterReturn = getItemProps(index, { onSelect, disabled });\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={disabled}\n onPress={propGetterReturn.onAction ? handlePress : undefined}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n borderRadius: bt.entropixRadiusSm as number,\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n {wrapStringChildren(children, {\n fontSize: bt.entropixFontSizeSm as number,\n color: t.entropixColorTextPrimary as string,\n ...textStyle,\n })}\n </Pressable>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n View,\n TextInput,\n Text,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n type KeyboardTypeOptions,\n} from \"react-native\";\nimport { useInput, type UseInputOptions } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../theme/theme-context.js\";\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps {\n /** Controlled value */\n value?: string;\n /** Default value for uncontrolled mode */\n defaultValue?: string;\n /** Called when the value changes */\n onChange?: (value: string) => void;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Whether the input is read-only */\n readOnly?: boolean;\n /** Whether the input is required */\n required?: boolean;\n /** Whether the input is in an invalid state */\n invalid?: boolean;\n /** Label text displayed above the input */\n label?: string;\n /** Helper text displayed below the input */\n helperText?: string;\n /** Error message displayed below the input when invalid */\n errorMessage?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Input type — maps to React Native keyboardType */\n type?: UseInputOptions[\"type\"];\n /** Size variant. Default: \"md\" */\n size?: InputSize;\n /** Override wrapper View style */\n style?: StyleProp<ViewStyle>;\n /** Override TextInput style */\n inputStyle?: StyleProp<TextStyle>;\n /** Override label and helper Text style */\n textStyle?: TextStyle;\n /** testID for testing */\n testID?: string;\n}\n\nconst KEYBOARD_TYPE_MAP: Record<\n NonNullable<UseInputOptions[\"type\"]>,\n KeyboardTypeOptions\n> = {\n text: \"default\",\n email: \"email-address\",\n password: \"default\",\n number: \"numeric\",\n tel: \"phone-pad\",\n url: \"url\",\n search: \"default\",\n};\n\n/**\n * Input -- styled text input with label, helper text, and error message.\n *\n * ```tsx\n * <Input\n * label=\"Email\"\n * placeholder=\"you@example.com\"\n * type=\"email\"\n * onChange={setEmail}\n * />\n * ```\n */\nexport function Input({\n value,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n required,\n invalid,\n label,\n helperText,\n errorMessage,\n placeholder,\n type = \"text\",\n size = \"md\",\n style,\n inputStyle,\n textStyle,\n testID,\n}: InputProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const {\n value: inputValue,\n isDisabled,\n isReadOnly,\n isInvalid,\n setValue,\n getInputProps,\n } = useInput({\n value,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n required,\n invalid,\n type,\n placeholder,\n });\n\n const propGetterReturn = getInputProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handleChangeText = useCallback(\n (text: string) => {\n setValue(text);\n },\n [setValue],\n );\n\n const sizeStyles = getSizeStyles(size, bt);\n const showError = isInvalid && errorMessage;\n\n return (\n <View style={[{ gap: bt.entropixSpacing1 as number }, style]}>\n {label ? (\n <Text\n style={[\n {\n fontSize: sizeStyles.labelFontSize,\n fontWeight: \"500\",\n color: t.entropixColorTextPrimary as string,\n },\n textStyle,\n ]}\n >\n {label}\n {required ? \" *\" : \"\"}\n </Text>\n ) : null}\n\n <TextInput\n {...rnAccessibility}\n testID={testID}\n value={inputValue}\n onChangeText={handleChangeText}\n placeholder={placeholder}\n placeholderTextColor={t.entropixColorTextTertiary as string}\n editable={!isDisabled && !isReadOnly}\n secureTextEntry={type === \"password\"}\n keyboardType={KEYBOARD_TYPE_MAP[type] ?? \"default\"}\n style={[\n {\n paddingVertical: sizeStyles.paddingVertical,\n paddingHorizontal: sizeStyles.paddingHorizontal,\n fontSize: sizeStyles.fontSize,\n borderWidth: 1,\n borderColor: showError\n ? (t.entropixColorBorderDanger as string)\n : (t.entropixColorBorderDefault as string),\n borderRadius: bt.entropixRadiusMd as number,\n backgroundColor: t.entropixColorBgPrimary as string,\n color: t.entropixColorTextPrimary as string,\n },\n isDisabled && { opacity: 0.5 },\n inputStyle,\n ]}\n />\n\n {showError ? (\n <Text\n style={[\n {\n fontSize: sizeStyles.helperFontSize,\n color: t.entropixColorTextDanger as string,\n },\n textStyle,\n ]}\n accessibilityRole=\"alert\"\n accessibilityLiveRegion=\"polite\"\n >\n {errorMessage}\n </Text>\n ) : helperText ? (\n <Text\n style={[\n {\n fontSize: sizeStyles.helperFontSize,\n color: t.entropixColorTextSecondary as string,\n },\n textStyle,\n ]}\n >\n {helperText}\n </Text>\n ) : null}\n </View>\n );\n}\n\nfunction getSizeStyles(size: InputSize, bt: Record<string, unknown>) {\n switch (size) {\n case \"sm\":\n return {\n paddingVertical: bt.entropixSpacing1 as number,\n paddingHorizontal: bt.entropixSpacing2 as number,\n fontSize: bt.entropixFontSizeXs as number,\n labelFontSize: bt.entropixFontSizeXs as number,\n helperFontSize: (bt.entropixFontSizeXs as number) - 1,\n };\n case \"lg\":\n return {\n paddingVertical: bt.entropixSpacing3 as number,\n paddingHorizontal: bt.entropixSpacing4 as number,\n fontSize: bt.entropixFontSizeBase as number,\n labelFontSize: bt.entropixFontSizeBase as number,\n helperFontSize: bt.entropixFontSizeSm as number,\n };\n default:\n return {\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n fontSize: bt.entropixFontSizeSm as number,\n labelFontSize: bt.entropixFontSizeSm as number,\n helperFontSize: bt.entropixFontSizeXs as number,\n };\n }\n}\n","import React, { useCallback } from \"react\";\nimport {\n View,\n TextInput,\n Text,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useInput } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../theme/theme-context.js\";\n\nexport type TextareaSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface TextareaProps {\n /** Controlled value */\n value?: string;\n /** Default value for uncontrolled mode */\n defaultValue?: string;\n /** Called when the value changes */\n onChange?: (value: string) => void;\n /** Whether the textarea is disabled */\n disabled?: boolean;\n /** Whether the textarea is read-only */\n readOnly?: boolean;\n /** Whether the textarea is required */\n required?: boolean;\n /** Whether the textarea is in an invalid state */\n invalid?: boolean;\n /** Label text displayed above the textarea */\n label?: string;\n /** Helper text displayed below the textarea */\n helperText?: string;\n /** Error message displayed below the textarea when invalid */\n errorMessage?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Number of visible lines. Default: 4 */\n numberOfLines?: number;\n /** Size variant. Default: \"md\" */\n size?: TextareaSize;\n /** Override wrapper View style */\n style?: StyleProp<ViewStyle>;\n /** Override TextInput style */\n inputStyle?: StyleProp<TextStyle>;\n /** Override label and helper Text style */\n textStyle?: TextStyle;\n /** testID for testing */\n testID?: string;\n}\n\n/**\n * Textarea -- multiline text input with label, helper text, and error message.\n *\n * ```tsx\n * <Textarea\n * label=\"Description\"\n * placeholder=\"Enter description...\"\n * numberOfLines={6}\n * onChange={setDescription}\n * />\n * ```\n */\nexport function Textarea({\n value,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n required,\n invalid,\n label,\n helperText,\n errorMessage,\n placeholder,\n numberOfLines = 4,\n size = \"md\",\n style,\n inputStyle,\n textStyle,\n testID,\n}: TextareaProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const {\n value: inputValue,\n isDisabled,\n isReadOnly,\n isInvalid,\n setValue,\n getInputProps,\n } = useInput({\n value,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n required,\n invalid,\n type: \"text\",\n placeholder,\n });\n\n const propGetterReturn = getInputProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handleChangeText = useCallback(\n (text: string) => {\n setValue(text);\n },\n [setValue],\n );\n\n const sizeStyles = getSizeStyles(size, bt);\n const showError = isInvalid && errorMessage;\n\n return (\n <View style={[{ gap: bt.entropixSpacing1 as number }, style]}>\n {label ? (\n <Text\n style={[\n {\n fontSize: sizeStyles.labelFontSize,\n fontWeight: \"500\",\n color: t.entropixColorTextPrimary as string,\n },\n textStyle,\n ]}\n >\n {label}\n {required ? \" *\" : \"\"}\n </Text>\n ) : null}\n\n <TextInput\n {...rnAccessibility}\n testID={testID}\n value={inputValue}\n onChangeText={handleChangeText}\n placeholder={placeholder}\n placeholderTextColor={t.entropixColorTextTertiary as string}\n editable={!isDisabled && !isReadOnly}\n multiline\n numberOfLines={numberOfLines}\n textAlignVertical=\"top\"\n style={[\n {\n paddingVertical: sizeStyles.paddingVertical,\n paddingHorizontal: sizeStyles.paddingHorizontal,\n fontSize: sizeStyles.fontSize,\n borderWidth: 1,\n borderColor: showError\n ? (t.entropixColorBorderDanger as string)\n : (t.entropixColorBorderDefault as string),\n borderRadius: bt.entropixRadiusMd as number,\n backgroundColor: t.entropixColorBgPrimary as string,\n color: t.entropixColorTextPrimary as string,\n minHeight: numberOfLines * (sizeStyles.fontSize + 8),\n },\n isDisabled && { opacity: 0.5 },\n inputStyle,\n ]}\n />\n\n {showError ? (\n <Text\n style={[\n {\n fontSize: sizeStyles.helperFontSize,\n color: t.entropixColorTextDanger as string,\n },\n textStyle,\n ]}\n accessibilityRole=\"alert\"\n accessibilityLiveRegion=\"polite\"\n >\n {errorMessage}\n </Text>\n ) : helperText ? (\n <Text\n style={[\n {\n fontSize: sizeStyles.helperFontSize,\n color: t.entropixColorTextSecondary as string,\n },\n textStyle,\n ]}\n >\n {helperText}\n </Text>\n ) : null}\n </View>\n );\n}\n\nfunction getSizeStyles(size: TextareaSize, bt: Record<string, unknown>) {\n switch (size) {\n case \"sm\":\n return {\n paddingVertical: bt.entropixSpacing1 as number,\n paddingHorizontal: bt.entropixSpacing2 as number,\n fontSize: bt.entropixFontSizeXs as number,\n labelFontSize: bt.entropixFontSizeXs as number,\n helperFontSize: (bt.entropixFontSizeXs as number) - 1,\n };\n case \"lg\":\n return {\n paddingVertical: bt.entropixSpacing3 as number,\n paddingHorizontal: bt.entropixSpacing4 as number,\n fontSize: bt.entropixFontSizeBase as number,\n labelFontSize: bt.entropixFontSizeBase as number,\n helperFontSize: bt.entropixFontSizeSm as number,\n };\n default:\n return {\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n fontSize: bt.entropixFontSizeSm as number,\n labelFontSize: bt.entropixFontSizeSm as number,\n helperFontSize: bt.entropixFontSizeXs as number,\n };\n }\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n View,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { useToggle } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../theme/theme-context.js\";\n\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface CheckboxProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** Controlled checked state */\n checked?: boolean;\n /** Default checked state for uncontrolled mode */\n defaultChecked?: boolean;\n /** Called when checked state changes */\n onChange?: (checked: boolean) => void;\n /** Whether the checkbox is disabled */\n disabled?: boolean;\n /** Whether the checkbox is in an indeterminate state */\n indeterminate?: boolean;\n /** Accessible label */\n label?: string;\n /** Size variant. Default: \"md\" */\n size?: CheckboxSize;\n /** Override container style */\n style?: StyleProp<ViewStyle>;\n /** Override label text style */\n textStyle?: TextStyle;\n children?: React.ReactNode;\n}\n\n/**\n * Checkbox -- styled checkbox with indicator box and label.\n *\n * Renders a row with a square indicator (filled when checked with\n * a checkmark, dash when indeterminate) and a text label.\n *\n * ```tsx\n * <Checkbox onChange={setAccepted} label=\"Accept Terms\">\n * I agree to the terms and conditions\n * </Checkbox>\n * ```\n */\nexport function Checkbox({\n checked,\n defaultChecked,\n onChange,\n disabled,\n indeterminate,\n label,\n size = \"md\",\n style,\n textStyle,\n children,\n ...rest\n}: CheckboxProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const { isChecked, isDisabled, getToggleProps } = useToggle({\n checked,\n defaultChecked,\n onChange,\n disabled,\n role: \"checkbox\",\n });\n\n const propGetterReturn = getToggleProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n // Override checked state for indeterminate\n if (indeterminate) {\n rnAccessibility.accessibilityState = {\n ...rnAccessibility.accessibilityState,\n checked: \"mixed\",\n };\n }\n\n if (label) {\n rnAccessibility.accessibilityLabel = label;\n }\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n const sizeStyles = getSizeStyles(size, bt);\n const isActive = indeterminate || isChecked;\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={isDisabled}\n onPress={isDisabled ? undefined : handlePress}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: bt.entropixSpacing2 as number,\n },\n isDisabled && { opacity: 0.5 },\n style,\n ]}\n >\n <View\n style={{\n width: sizeStyles.boxSize,\n height: sizeStyles.boxSize,\n borderWidth: 2,\n borderColor: isActive\n ? (t.entropixColorActionPrimaryDefault as string)\n : (t.entropixColorBorderDefault as string),\n borderRadius: bt.entropixRadiusSm as number,\n backgroundColor: isActive\n ? (t.entropixColorActionPrimaryDefault as string)\n : \"transparent\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {indeterminate ? (\n <Text\n style={{\n fontSize: sizeStyles.indicatorFontSize,\n fontWeight: \"700\",\n color: t.entropixColorTextInverse as string,\n lineHeight: sizeStyles.boxSize - 2,\n }}\n >\n {\"\\u2013\"}\n </Text>\n ) : isChecked ? (\n <Text\n style={{\n fontSize: sizeStyles.indicatorFontSize,\n fontWeight: \"700\",\n color: t.entropixColorTextInverse as string,\n lineHeight: sizeStyles.boxSize - 2,\n }}\n >\n {\"\\u2713\"}\n </Text>\n ) : null}\n </View>\n\n {typeof children === \"string\" ? (\n <Text\n style={[\n {\n fontSize: sizeStyles.fontSize,\n color: t.entropixColorTextPrimary as string,\n },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : children != null ? (\n children\n ) : label ? (\n <Text\n style={[\n {\n fontSize: sizeStyles.fontSize,\n color: t.entropixColorTextPrimary as string,\n },\n textStyle,\n ]}\n >\n {label}\n </Text>\n ) : null}\n </Pressable>\n );\n}\n\nfunction getSizeStyles(size: CheckboxSize, bt: Record<string, unknown>) {\n switch (size) {\n case \"sm\":\n return {\n boxSize: 16,\n indicatorFontSize: 10,\n fontSize: bt.entropixFontSizeXs as number,\n };\n case \"lg\":\n return {\n boxSize: 24,\n indicatorFontSize: 16,\n fontSize: bt.entropixFontSizeBase as number,\n };\n default:\n return {\n boxSize: 20,\n indicatorFontSize: 13,\n fontSize: bt.entropixFontSizeSm as number,\n };\n }\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseRadioGroupReturn } from \"@entropix/core\";\n\nexport const RadioGroupContext = createContext<UseRadioGroupReturn | null>(null);\n\nexport function useRadioGroupContext(): UseRadioGroupReturn {\n const context = useContext(RadioGroupContext);\n if (!context) {\n throw new Error(\n \"Radio compound components must be used within a <RadioGroup> provider.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { View, Text, type StyleProp, type ViewStyle, type TextStyle } from \"react-native\";\nimport { useRadioGroup, type UseRadioGroupOptions } from \"@entropix/core\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\nimport { RadioGroupContext } from \"./radio-context.js\";\n\nexport interface RadioGroupProps extends UseRadioGroupOptions {\n /** Label text for the radio group */\n label?: string;\n /** Override wrapper View style */\n style?: StyleProp<ViewStyle>;\n /** Override label text style */\n textStyle?: TextStyle;\n children: React.ReactNode;\n /** testID for testing */\n testID?: string;\n}\n\n/**\n * RadioGroup -- container for RadioItem components.\n *\n * Provides radio group state via context. All RadioItem children\n * share the same selection state.\n *\n * ```tsx\n * <RadioGroup label=\"Color\" onChange={setColor} defaultValue=\"red\">\n * <RadioItem value=\"red\">Red</RadioItem>\n * <RadioItem value=\"blue\">Blue</RadioItem>\n * </RadioGroup>\n * ```\n */\nexport function RadioGroup({\n label,\n style,\n textStyle,\n children,\n testID,\n ...options\n}: RadioGroupProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const radioGroup = useRadioGroup(options);\n const propGetterReturn = radioGroup.getRadioGroupProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n if (label) {\n rnAccessibility.accessibilityLabel = label;\n }\n\n return (\n <RadioGroupContext.Provider value={radioGroup}>\n <View\n {...rnAccessibility}\n testID={testID}\n style={[\n {\n gap: bt.entropixSpacing2 as number,\n },\n style,\n ]}\n >\n {label ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: t.entropixColorTextPrimary as string,\n },\n textStyle,\n ]}\n >\n {label}\n </Text>\n ) : null}\n {children}\n </View>\n </RadioGroupContext.Provider>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n View,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\nimport { useRadioGroupContext } from \"./radio-context.js\";\n\nexport interface RadioItemProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** The value this radio option represents */\n value: string;\n /** Whether this option is disabled */\n disabled?: boolean;\n /** Override container style */\n style?: StyleProp<ViewStyle>;\n /** Override label text style */\n textStyle?: TextStyle;\n children?: React.ReactNode;\n}\n\n/**\n * RadioItem -- individual radio option within a RadioGroup.\n *\n * Renders a Pressable row with a circle indicator and label text.\n * When selected, the circle shows a filled inner dot.\n *\n * ```tsx\n * <RadioItem value=\"option-1\">Option 1</RadioItem>\n * ```\n */\nexport function RadioItem({\n value,\n disabled,\n style,\n textStyle,\n children,\n ...rest\n}: RadioItemProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getRadioProps } = useRadioGroupContext();\n const propGetterReturn = getRadioProps(value, { disabled });\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const isChecked = propGetterReturn.accessibility.checked === true;\n const isDisabled = propGetterReturn.accessibility.disabled === true;\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={isDisabled}\n onPress={isDisabled ? undefined : handlePress}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: bt.entropixSpacing2 as number,\n },\n isDisabled && { opacity: 0.5 },\n style,\n ]}\n >\n {/* Outer circle */}\n <View\n style={{\n width: 20,\n height: 20,\n borderRadius: 10,\n borderWidth: 2,\n borderColor: isChecked\n ? (t.entropixColorActionPrimaryDefault as string)\n : (t.entropixColorBorderDefault as string),\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {/* Inner filled circle */}\n {isChecked ? (\n <View\n style={{\n width: 10,\n height: 10,\n borderRadius: 5,\n backgroundColor: t.entropixColorActionPrimaryDefault as string,\n }}\n />\n ) : null}\n </View>\n\n {typeof children === \"string\" ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n color: t.entropixColorTextPrimary as string,\n },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Pressable>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { UseSelectReturn } from \"@entropix/core\";\n\nexport const SelectContext = createContext<UseSelectReturn | null>(null);\n\nexport function useSelectContext(): UseSelectReturn {\n const context = useContext(SelectContext);\n if (!context) {\n throw new Error(\n \"Select compound components must be used within a <Select> provider.\",\n );\n }\n return context;\n}\n","import React from \"react\";\nimport { View, Text, type StyleProp, type ViewStyle, type TextStyle } from \"react-native\";\nimport { useSelect, type UseSelectOptions } from \"@entropix/core\";\nimport { useTheme } from \"../../theme/theme-context.js\";\nimport { SelectContext } from \"./select-context.js\";\n\nexport interface SelectProps extends UseSelectOptions {\n /** Label text displayed above the select */\n label?: string;\n /** Override wrapper View style */\n style?: StyleProp<ViewStyle>;\n /** Override label text style */\n textStyle?: TextStyle;\n children: React.ReactNode;\n /** testID for testing */\n testID?: string;\n}\n\n/**\n * Select -- compound component root that provides select state via context.\n *\n * ```tsx\n * <Select label=\"Country\" onChange={setCountry} placeholder=\"Choose...\">\n * <SelectTrigger />\n * <SelectContent>\n * <SelectOption value=\"us\">United States</SelectOption>\n * <SelectOption value=\"ca\">Canada</SelectOption>\n * </SelectContent>\n * </Select>\n * ```\n */\nexport function Select({\n label,\n style,\n textStyle,\n children,\n testID,\n ...options\n}: SelectProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const select = useSelect(options);\n\n return (\n <SelectContext.Provider value={select}>\n <View\n testID={testID}\n style={[{ gap: bt.entropixSpacing1 as number }, style]}\n >\n {label ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: \"500\",\n color: t.entropixColorTextPrimary as string,\n },\n textStyle,\n ]}\n >\n {label}\n </Text>\n ) : null}\n {children}\n </View>\n </SelectContext.Provider>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\nimport { useSelectContext } from \"./select-context.js\";\n\nexport interface SelectTriggerProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** Placeholder text when no value is selected */\n placeholder?: string;\n /** Display label for the currently selected value */\n displayValue?: string;\n /** Override container style */\n style?: StyleProp<ViewStyle>;\n /** Override text style */\n textStyle?: TextStyle;\n}\n\n/**\n * SelectTrigger -- the button that opens the select dropdown.\n *\n * Renders as a bordered input-like row with the selected value\n * (or placeholder) and a chevron indicator.\n */\nexport function SelectTrigger({\n placeholder = \"Select...\",\n displayValue,\n style,\n textStyle,\n ...rest\n}: SelectTriggerProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { selectedValue, isDisabled, isOpen, getTriggerProps } =\n useSelectContext();\n const propGetterReturn = getTriggerProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n const hasValue = selectedValue !== \"\";\n const label = displayValue ?? (hasValue ? selectedValue : placeholder);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={isDisabled}\n onPress={isDisabled ? undefined : handlePress}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n borderWidth: 1,\n borderColor: isOpen\n ? (t.entropixColorActionPrimaryDefault as string)\n : (t.entropixColorBorderDefault as string),\n borderRadius: bt.entropixRadiusMd as number,\n backgroundColor: t.entropixColorBgPrimary as string,\n },\n isDisabled && { opacity: 0.5 },\n style,\n ]}\n >\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n color: hasValue\n ? (t.entropixColorTextPrimary as string)\n : (t.entropixColorTextTertiary as string),\n flex: 1,\n },\n textStyle,\n ]}\n numberOfLines={1}\n >\n {label}\n </Text>\n <Text\n style={{\n fontSize: bt.entropixFontSizeXs as number,\n color: t.entropixColorTextSecondary as string,\n marginLeft: bt.entropixSpacing2 as number,\n }}\n >\n {\"\\u25BC\"}\n </Text>\n </Pressable>\n );\n}\n","import React from \"react\";\nimport {\n Modal,\n View,\n Pressable,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\nimport { useSelectContext } from \"./select-context.js\";\n\nexport interface SelectContentProps {\n children: React.ReactNode;\n /** Override listbox container style */\n style?: StyleProp<ViewStyle>;\n /** testID for testing */\n testID?: string;\n}\n\n/**\n * SelectContent -- the dropdown listbox rendered inside a Modal.\n *\n * Displays the option list when the select is open.\n * Tapping the overlay closes the select.\n */\nexport function SelectContent({ children, style, testID }: SelectContentProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { isOpen, close, getListboxProps } = useSelectContext();\n const propGetterReturn = getListboxProps();\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n\n if (!isOpen) return null;\n\n return (\n <Modal\n visible={isOpen}\n transparent\n animationType=\"fade\"\n onRequestClose={close}\n >\n <Pressable\n style={{\n flex: 1,\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"rgba(0,0,0,0.3)\",\n }}\n onPress={close}\n >\n <Pressable\n onPress={() => {\n // Prevent overlay close when tapping inside the content\n }}\n >\n <View\n {...rnAccessibility}\n testID={testID}\n style={[\n {\n minWidth: 240,\n maxHeight: 300,\n padding: bt.entropixSpacing1 as number,\n backgroundColor: t.entropixColorBgPrimary as string,\n borderWidth: 1,\n borderColor: t.entropixColorBorderDefault as string,\n borderRadius: bt.entropixRadiusMd as number,\n shadowColor: \"#000\",\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.15,\n shadowRadius: 12,\n elevation: 8,\n },\n style,\n ]}\n >\n {children}\n </View>\n </Pressable>\n </Pressable>\n </Modal>\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Pressable,\n Text,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { mapAccessibilityToRN } from \"../../utils/map-accessibility-to-rn.js\";\nimport { useTheme } from \"../../theme/theme-context.js\";\nimport { useSelectContext } from \"./select-context.js\";\n\nexport interface SelectOptionProps\n extends Omit<PressableProps, \"disabled\" | \"onPress\" | \"style\" | \"children\"> {\n /** The value this option represents */\n value: string;\n /** Index of this option in the list (auto-assigned by SelectContent if omitted) */\n index?: number;\n /** Whether this option is disabled */\n disabled?: boolean;\n /** Override container style */\n style?: StyleProp<ViewStyle>;\n /** Override text style */\n textStyle?: TextStyle;\n children: React.ReactNode;\n}\n\n/**\n * SelectOption -- an individual option within SelectContent.\n *\n * Renders as a Pressable row. Selected option gets a highlight\n * background to indicate the current selection.\n */\nexport function SelectOption({\n value,\n index,\n disabled,\n style,\n textStyle,\n children,\n ...rest\n}: SelectOptionProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n const { getOptionProps } = useSelectContext();\n const propGetterReturn = getOptionProps(value, index ?? 0, { disabled });\n const rnAccessibility = mapAccessibilityToRN(propGetterReturn.accessibility);\n const isSelected = propGetterReturn.accessibility.selected === true;\n\n const handlePress = useCallback(() => {\n propGetterReturn.onAction?.();\n }, [propGetterReturn.onAction]);\n\n return (\n <Pressable\n {...rnAccessibility}\n {...rest}\n disabled={disabled}\n onPress={propGetterReturn.onAction ? handlePress : undefined}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingVertical: bt.entropixSpacing2 as number,\n paddingHorizontal: bt.entropixSpacing3 as number,\n borderRadius: bt.entropixRadiusSm as number,\n backgroundColor: isSelected\n ? (t.entropixColorBgSecondary as string)\n : \"transparent\",\n },\n disabled && { opacity: 0.5 },\n style,\n ]}\n >\n {typeof children === \"string\" ? (\n <Text\n style={[\n {\n fontSize: bt.entropixFontSizeSm as number,\n fontWeight: isSelected ? \"600\" : \"400\",\n color: t.entropixColorTextPrimary as string,\n },\n textStyle,\n ]}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Pressable>\n );\n}\n","import { useState, useEffect, useCallback } from \"react\";\nimport { Dimensions } from \"react-native\";\n\n/**\n * Breakpoint values in pixels, matching @entropix/tokens breakpoint primitives.\n */\nconst BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n} as const;\n\nexport type Breakpoint = \"base\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nconst BREAKPOINT_ORDER: Breakpoint[] = [\"base\", \"sm\", \"md\", \"lg\", \"xl\", \"2xl\"];\n\n/**\n * Returns the current breakpoint name based on screen width.\n * Uses React Native's Dimensions API and listens for screen size changes\n * (orientation changes, split-screen, etc.).\n *\n * - `\"base\"` — <640px (phones portrait)\n * - `\"sm\"` — ≥640px (phones landscape)\n * - `\"md\"` — ≥768px (tablets portrait)\n * - `\"lg\"` — ≥1024px (tablets landscape)\n * - `\"xl\"` — ≥1280px (large tablets / desktop)\n * - `\"2xl\"` — ≥1536px (wide screens)\n *\n * ```tsx\n * const breakpoint = useBreakpoint();\n * const isMobile = breakpoint === \"base\" || breakpoint === \"sm\";\n * ```\n */\nexport function useBreakpoint(): Breakpoint {\n const getBreakpoint = useCallback((): Breakpoint => {\n const { width } = Dimensions.get(\"window\");\n if (width >= BREAKPOINTS[\"2xl\"]) return \"2xl\";\n if (width >= BREAKPOINTS.xl) return \"xl\";\n if (width >= BREAKPOINTS.lg) return \"lg\";\n if (width >= BREAKPOINTS.md) return \"md\";\n if (width >= BREAKPOINTS.sm) return \"sm\";\n return \"base\";\n }, []);\n\n const [breakpoint, setBreakpoint] = useState<Breakpoint>(getBreakpoint);\n\n useEffect(() => {\n const subscription = Dimensions.addEventListener(\"change\", ({ window }) => {\n const width = window.width;\n let next: Breakpoint = \"base\";\n if (width >= BREAKPOINTS[\"2xl\"]) next = \"2xl\";\n else if (width >= BREAKPOINTS.xl) next = \"xl\";\n else if (width >= BREAKPOINTS.lg) next = \"lg\";\n else if (width >= BREAKPOINTS.md) next = \"md\";\n else if (width >= BREAKPOINTS.sm) next = \"sm\";\n\n setBreakpoint((prev) => (prev !== next ? next : prev));\n });\n\n return () => subscription.remove();\n }, []);\n\n return breakpoint;\n}\n\n/**\n * Returns true if the current screen width is at or above the given breakpoint.\n *\n * ```tsx\n * const isTablet = useBreakpointValue(\"md\");\n * // true when screen ≥768px (tablet portrait and up)\n * ```\n */\nexport function useBreakpointValue(breakpoint: Exclude<Breakpoint, \"base\">): boolean {\n const current = useBreakpoint();\n const currentIndex = BREAKPOINT_ORDER.indexOf(current);\n const targetIndex = BREAKPOINT_ORDER.indexOf(breakpoint);\n return currentIndex >= targetIndex;\n}\n\n/**\n * Returns the current screen dimensions, updating on orientation/size changes.\n *\n * ```tsx\n * const { width, height } = useScreenDimensions();\n * ```\n */\nexport function useScreenDimensions(): { width: number; height: number } {\n const [dimensions, setDimensions] = useState(() => Dimensions.get(\"window\"));\n\n useEffect(() => {\n const subscription = Dimensions.addEventListener(\"change\", ({ window }) => {\n setDimensions(window);\n });\n return () => subscription.remove();\n }, []);\n\n return { width: dimensions.width, height: dimensions.height };\n}\n\nexport { BREAKPOINTS, BREAKPOINT_ORDER };\n","import React from \"react\";\nimport { View, type ViewProps, type ViewStyle } from \"react-native\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport type SpacingSize = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nexport interface StackProps extends ViewProps {\n /** Gap between children. Default uses space.layout.stack token (16px) */\n gap?: SpacingSize;\n /** Cross-axis alignment */\n align?: \"start\" | \"center\" | \"end\" | \"stretch\";\n /** Whether to take full width */\n fullWidth?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Stack — vertical flex layout primitive for React Native.\n *\n * Uses the `space.layout.stack` token (16px) as default gap.\n *\n * ```tsx\n * <Stack gap=\"lg\" align=\"center\">\n * <Button>First</Button>\n * <Button>Second</Button>\n * </Stack>\n * ```\n */\nexport function Stack({\n gap,\n align,\n fullWidth,\n style,\n children,\n ...rest\n}: StackProps) {\n const { baseTokens: bt } = useTheme();\n\n const gapValue = getGapValue(gap, bt);\n const alignMap: Record<string, ViewStyle[\"alignItems\"]> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n stretch: \"stretch\",\n };\n\n return (\n <View\n style={[\n { flexDirection: \"column\" as const },\n gapValue !== undefined && { gap: gapValue },\n gapValue === undefined && { gap: bt.entropixSpaceLayoutStack as number },\n align && { alignItems: alignMap[align] },\n fullWidth && { width: \"100%\" },\n style,\n ]}\n {...rest}\n >\n {children}\n </View>\n );\n}\n\nfunction getGapValue(\n gap: SpacingSize | undefined,\n bt: Record<string, unknown>,\n): number | undefined {\n if (!gap) return undefined;\n switch (gap) {\n case \"none\": return 0;\n case \"xs\": return bt.entropixSpacing1 as number;\n case \"sm\": return bt.entropixSpacing2 as number;\n case \"md\": return bt.entropixSpacing4 as number;\n case \"lg\": return bt.entropixSpacing6 as number;\n case \"xl\": return bt.entropixSpacing8 as number;\n case \"2xl\": return bt.entropixSpacing12 as number;\n }\n}\n","import React from \"react\";\nimport { View, type ViewProps, type ViewStyle } from \"react-native\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport type SpacingSize = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nexport interface InlineProps extends ViewProps {\n /** Gap between children. Default uses space.layout.inline token (12px) */\n gap?: SpacingSize;\n /** Cross-axis alignment */\n align?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n /** Main-axis justification */\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\";\n /** Whether to wrap children */\n wrap?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Inline — horizontal flex layout primitive for React Native.\n *\n * Uses the `space.layout.inline` token (12px) as default gap.\n *\n * ```tsx\n * <Inline gap=\"sm\" justify=\"between\" wrap>\n * <Button variant=\"primary\">Save</Button>\n * <Button variant=\"ghost\">Cancel</Button>\n * </Inline>\n * ```\n */\nexport function Inline({\n gap,\n align,\n justify,\n wrap,\n style,\n children,\n ...rest\n}: InlineProps) {\n const { baseTokens: bt } = useTheme();\n\n const gapValue = getGapValue(gap, bt);\n const alignMap: Record<string, ViewStyle[\"alignItems\"]> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n stretch: \"stretch\",\n baseline: \"baseline\",\n };\n const justifyMap: Record<string, ViewStyle[\"justifyContent\"]> = {\n start: \"flex-start\",\n center: \"center\",\n end: \"flex-end\",\n between: \"space-between\",\n around: \"space-around\",\n };\n\n return (\n <View\n style={[\n {\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n },\n gapValue !== undefined && { gap: gapValue },\n gapValue === undefined && { gap: bt.entropixSpaceLayoutInline as number },\n align && { alignItems: alignMap[align] },\n justify && { justifyContent: justifyMap[justify] },\n wrap && { flexWrap: \"wrap\" as const },\n style,\n ]}\n {...rest}\n >\n {children}\n </View>\n );\n}\n\nfunction getGapValue(\n gap: SpacingSize | undefined,\n bt: Record<string, unknown>,\n): number | undefined {\n if (!gap) return undefined;\n switch (gap) {\n case \"none\": return 0;\n case \"xs\": return bt.entropixSpacing1 as number;\n case \"sm\": return bt.entropixSpacing2 as number;\n case \"md\": return bt.entropixSpacing4 as number;\n case \"lg\": return bt.entropixSpacing6 as number;\n case \"xl\": return bt.entropixSpacing8 as number;\n case \"2xl\": return bt.entropixSpacing12 as number;\n }\n}\n","import React from \"react\";\nimport { View, type ViewProps, type ViewStyle } from \"react-native\";\nimport { useTheme } from \"../../theme/theme-context.js\";\nimport { useBreakpoint } from \"../../utils/use-breakpoint.js\";\n\nexport type ContainerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface ContainerProps extends ViewProps {\n /** Maximum width constraint. Default: \"lg\" (1024px). On mobile this mainly affects tablet/web. */\n maxWidth?: ContainerSize;\n /** Whether to center children horizontally */\n center?: boolean;\n children?: React.ReactNode;\n}\n\nconst maxWidthMap: Record<ContainerSize, number | undefined> = {\n xs: 480,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n full: undefined,\n};\n\n/**\n * Container — responsive page-level wrapper with adaptive horizontal padding.\n *\n * Padding scales with screen size using breakpoint tokens:\n * - Mobile (<768px): `space.layout.page-margin` (24px)\n * - Tablet (≥768px): `space.layout.page-margin-md` (32px)\n * - Desktop (≥1024px): `space.layout.page-margin-lg` (40px)\n *\n * ```tsx\n * <Container maxWidth=\"lg\">\n * <Stack gap=\"xl\">\n * <Text>Page content</Text>\n * </Stack>\n * </Container>\n * ```\n */\nexport function Container({\n maxWidth = \"lg\",\n center,\n style,\n children,\n ...rest\n}: ContainerProps) {\n const { baseTokens: bt } = useTheme();\n const breakpoint = useBreakpoint();\n\n const maxW = maxWidthMap[maxWidth];\n\n // Responsive page margin: scales up at tablet and desktop breakpoints\n let pageMargin = bt.entropixSpaceLayoutPageMargin as number;\n if (breakpoint === \"lg\" || breakpoint === \"xl\" || breakpoint === \"2xl\") {\n pageMargin = bt.entropixSpaceLayoutPageMarginLg as number;\n } else if (breakpoint === \"md\") {\n pageMargin = bt.entropixSpaceLayoutPageMarginMd as number;\n }\n\n return (\n <View\n style={[\n {\n width: \"100%\",\n paddingHorizontal: pageMargin,\n } as ViewStyle,\n maxW !== undefined && { maxWidth: maxW, alignSelf: \"center\" as const },\n center && { alignItems: \"center\" as const },\n style,\n ]}\n {...rest}\n >\n {children}\n </View>\n );\n}\n","import React from \"react\";\nimport { View, type ViewProps, type ViewStyle } from \"react-native\";\nimport { useTheme } from \"../../theme/theme-context.js\";\n\nexport interface DividerProps extends ViewProps {\n /** Orientation of the divider */\n orientation?: \"horizontal\" | \"vertical\";\n /** Spacing above and below (or left and right for vertical) */\n spacing?: \"sm\" | \"md\" | \"lg\";\n}\n\n/**\n * Divider — visual separator line for React Native.\n *\n * Uses the `color.border.default` token for line color.\n *\n * ```tsx\n * <Stack>\n * <Text>Section A</Text>\n * <Divider spacing=\"md\" />\n * <Text>Section B</Text>\n * </Stack>\n *\n * <Inline>\n * <Text>Left</Text>\n * <Divider orientation=\"vertical\" spacing=\"sm\" />\n * <Text>Right</Text>\n * </Inline>\n * ```\n */\nexport function Divider({\n orientation = \"horizontal\",\n spacing,\n style,\n ...rest\n}: DividerProps) {\n const { tokens: t, baseTokens: bt } = useTheme();\n\n const spacingMap: Record<string, number> = {\n sm: bt.entropixSpacing2 as number,\n md: bt.entropixSpacing4 as number,\n lg: bt.entropixSpacing6 as number,\n };\n\n const spacingValue = spacing ? spacingMap[spacing] : 0;\n\n const isVertical = orientation === \"vertical\";\n\n const dividerStyle: ViewStyle = isVertical\n ? {\n width: 1,\n alignSelf: \"stretch\",\n backgroundColor: t.entropixColorBorderDefault as string,\n marginHorizontal: spacingValue,\n }\n : {\n height: 1,\n width: \"100%\",\n backgroundColor: t.entropixColorBorderDefault as string,\n marginVertical: spacingValue,\n };\n\n return (\n <View\n accessibilityRole={isVertical ? \"none\" : undefined}\n style={[dividerStyle, style]}\n {...rest}\n />\n );\n}\n"]}