import type React from 'react'; import type { ScrollViewProps as ReactNativeScrollViewProps, StyleProp, ViewProps as ReactNativeViewProps, ViewStyle, } from 'react-native'; import type { Responsive } from '../core/responsive'; import type { SurfaceTheme } from './theme'; type SpaceToken = keyof SurfaceTheme['spacing']; type RadiusToken = keyof SurfaceTheme['radii']; type ColorToken = keyof SurfaceTheme['colors']; type RadiusValue = number | RadiusToken; export type SpaceValue = number | SpaceToken; export type ColorValue = string | ColorToken; export interface ViewStyleProps { p?: Responsive; px?: Responsive; py?: Responsive; pt?: Responsive; pb?: Responsive; pl?: Responsive; pr?: Responsive; m?: Responsive; mx?: Responsive; my?: Responsive; mt?: Responsive; mb?: Responsive; ml?: Responsive; mr?: Responsive; gap?: Responsive; rowGap?: Responsive; columnGap?: Responsive; bg?: Responsive; radius?: Responsive; borderWidth?: Responsive; borderColor?: Responsive; width?: Responsive; height?: Responsive; minWidth?: Responsive; maxWidth?: Responsive; minHeight?: Responsive; maxHeight?: Responsive; flex?: Responsive; flexGrow?: Responsive; flexShrink?: Responsive; flexBasis?: Responsive; direction?: Responsive<'row' | 'column'>; align?: Responsive<'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline'>; justify?: Responsive< 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly' >; wrap?: Responsive<'nowrap' | 'wrap'>; alignSelf?: Responsive; position?: Responsive; top?: Responsive; bottom?: Responsive; left?: Responsive; right?: Responsive; overflow?: Responsive; zIndex?: Responsive; opacity?: Responsive; style?: StyleProp; } export interface ViewProps extends ViewStyleProps { accessibilityLabel?: ReactNativeViewProps['accessibilityLabel']; accessibilityLabelledBy?: ReactNativeViewProps['accessibilityLabelledBy']; accessibilityRole?: ReactNativeViewProps['accessibilityRole']; accessibilityState?: ReactNativeViewProps['accessibilityState']; accessible?: ReactNativeViewProps['accessible']; children?: React.ReactNode; nativeID?: ReactNativeViewProps['nativeID']; pointerEvents?: ReactNativeViewProps['pointerEvents']; testID?: string; } export interface DividerProps extends Omit { orientation?: 'horizontal' | 'vertical'; color?: ColorValue; thickness?: number; } export interface GridProps extends Omit { children?: React.ReactNode; cols?: Responsive; gap?: Responsive; rowGap?: Responsive; colGap?: Responsive; minItemWidth?: Responsive; } export interface ScrollViewProps extends ViewStyleProps, Omit { children?: React.ReactNode; contentContainerStyle?: StyleProp; }