/** * React implementation of ZName component and useZName hook. */ import React from "react" import type { CSSProperties, ReactNode } from "react" import { ZINDEX_LAYERS, type ZIndexLayerName } from "./constants" /** * Props for the React ZName component. */ interface ReactZNameProps { /** The z-index layer to apply */ name: ZIndexLayerName; /** Child content to wrap */ children: ReactNode; /** Additional CSS styles */ style?: CSSProperties; /** Override z-index value (use sparingly) */ zIndex?: number; } /** * Hook to get z-index value for a layer name. * * @example * ```tsx * const modalZIndex = useZName('modal'); // 2000 * const ageGateZIndex = useZName('high-priority'); // 9000 * ``` */ export function useZName(layer: ZIndexLayerName): number { return ZINDEX_LAYERS[layer] } /** * Component that wraps children in a div with the specified z-index layer. * * @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