@ramses-superapp/ramses-ui
Version:
Skinless UI primitives for Ramses Built Apps
133 lines • 3.55 kB
TypeScript
import type { ImageSourcePropType, TextStyle, ViewStyle } from 'react-native';
export interface RsSkinlessTextProps {
text?: string;
children?: React.ReactNode;
style?: TextStyle;
numberOfLines?: number;
selectable?: boolean;
}
export interface RsSkinlessButtonProps {
label?: string;
children?: React.ReactNode;
onPress?: () => void;
onLongPress?: () => void;
disabled?: boolean;
style?: ViewStyle;
labelStyle?: TextStyle;
accessibilityLabel?: string;
}
export interface RsSkinlessTextInputProps {
value?: string;
onChangeText?: (text: string) => void;
placeholder?: string;
secureTextEntry?: boolean;
multiline?: boolean;
maxLength?: number;
keyboardType?: 'default' | 'numeric' | 'email-address' | 'phone-pad' | 'number-pad' | 'decimal-pad';
autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters';
style?: ViewStyle;
textStyle?: TextStyle;
editable?: boolean;
onFocus?: () => void;
onBlur?: () => void;
}
export interface RsSkinlessDividerProps {
orientation?: 'horizontal' | 'vertical';
style?: ViewStyle;
}
export interface RsSkinlessRowViewProps {
children?: React.ReactNode;
style?: ViewStyle;
gap?: number;
align?: 'start' | 'center' | 'end' | 'stretch';
justify?: 'start' | 'center' | 'end' | 'between' | 'around';
}
export interface RsSkinlessToggleButtonProps {
value: boolean;
onToggle: (next: boolean) => void;
disabled?: boolean;
style?: ViewStyle;
accessibilityLabel?: string;
}
export interface RsSkinlessImageProps {
source: ImageSourcePropType | {
uri: string;
};
resizeMode?: 'cover' | 'contain' | 'stretch' | 'center';
style?: ViewStyle;
alt?: string;
onLoad?: () => void;
onError?: () => void;
}
export interface RsSkinlessIconProps {
name: string;
source?: 'feather' | 'material' | 'ionicons';
size?: number;
style?: ViewStyle;
}
export interface RsSkinlessModalProps {
visible: boolean;
onClose: () => void;
animationType?: 'fade' | 'slide' | 'none';
children: React.ReactNode;
style?: ViewStyle;
}
export interface RsSkinlessBottomSheetProps {
visible: boolean;
onClose: () => void;
snapPoints?: number[];
children: React.ReactNode;
style?: ViewStyle;
}
export interface RsSkinlessTabBarProps {
tabs: Array<{
key: string;
label: string;
icon?: string;
}>;
activeTab: string;
onTabChange: (key: string) => void;
style?: ViewStyle;
}
export interface RsSkinlessToastProps {
visible: boolean;
message: string;
duration?: number;
position?: 'top' | 'bottom';
onDismiss?: () => void;
style?: ViewStyle;
}
export interface RsSkinlessProgressBarProps {
/** 0–1 */
progress: number;
style?: ViewStyle;
}
export interface RsSkinlessSkeletonProps {
width?: number;
height?: number;
borderRadius?: number;
style?: ViewStyle;
}
export interface RsSkinlessBadgeProps {
count?: number;
visible?: boolean;
children: React.ReactNode;
style?: ViewStyle;
}
export interface RsSkinlessChipProps {
label: string;
selected?: boolean;
onPress?: () => void;
disabled?: boolean;
style?: ViewStyle;
}
export interface RsSkinlessSliderProps {
value: number;
minimumValue?: number;
maximumValue?: number;
step?: number;
onValueChange?: (value: number) => void;
disabled?: boolean;
style?: ViewStyle;
}
//# sourceMappingURL=props.d.ts.map