/** * React Native implementation of ZName component and useZNameRN hook. */ import React from "react" import { View } from "react-native" import type { ViewStyle } from "react-native" import { ZINDEX_LAYERS, type ZIndexLayerName } from "./constants" /** * Props for the React Native ZName component. */ interface ReactNativeZNameProps { /** The z-index layer to apply */ name: ZIndexLayerName; /** Child content to wrap */ children: React.ReactNode; /** Additional View styles */ style?: ViewStyle; /** Override z-index value (use sparingly) */ zIndex?: number; } /** * Hook to get z-index value for a layer name (React Native). * * @example * ```tsx * const modalZIndex = useZNameRN('modal'); // 2000 * const ageGateZIndex = useZNameRN('high-priority'); // 9000 * ``` */ export function useZNameRN(layer: ZIndexLayerName): number { return ZINDEX_LAYERS[layer] } /** * Component that wraps children in a View with the specified z-index layer. * Automatically sets Android elevation to match zIndex. * * @example * ```tsx * * * * ``` */ export const ZName: React.FC = ({ name, children, style, zIndex: customZIndex, }) => { const zIndex = customZIndex ?? ZINDEX_LAYERS[name] return ( {children} ) } // Re-export constants for convenience export { ZINDEX_LAYERS, type ZIndexLayerName } export default ZName