
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@evlop/native-components
Advanced tools
A collection of React Native components with styled-system integration for building beautiful, consistent UI. These components are designed for use with AI-powered code generation tools.
A collection of React Native components with styled-system integration for building beautiful, consistent UI. These components are designed for use with AI-powered code generation tools.
npm install @evlop/native-components
import { Box, Flexbox, Text, Icon, Button, Actionable, Image, ImageBackground, Swiper, triggerHapticFeedback } from 'types-for-ai';
A styled View component with support for layout, spacing, borders, colors, and positioning.
// Basic container
<Box padding={16} backgroundColor="white" borderRadius={8}>
<Text>Content</Text>
</Box>
// Card with shadow effect
<Box
margin={16}
padding={20}
backgroundColor="white"
borderRadius={12}
borderWidth={1}
borderColor="gray-200"
>
<Text>Card Content</Text>
</Box>
// Absolute positioned overlay
<Box position="absolute" top={0} left={0} right={0} bottom={0} opacity={0.5} backgroundColor="black" />
Props: All React Native ViewProps + flexbox, border, layout, color, background, space, opacity, position
A flexbox container with default flexDirection: 'row' and gap support.
// Horizontal row with items
<Flexbox flexDirection="row" justifyContent="space-between" alignItems="center" gap={12}>
<Icon icon="home" />
<Text>Home</Text>
</Flexbox>
// Vertical stack
<Flexbox flexDirection="column" gap={8} padding={16}>
<Text>Item 1</Text>
<Text>Item 2</Text>
<Text>Item 3</Text>
</Flexbox>
// Grid-like layout
<Flexbox flexWrap="wrap" gap={16} rowGap={8} columnGap={12}>
{items.map(item => <Box key={item.id} width="48%">{item.name}</Box>)}
</Flexbox>
Props: All Box props + gap, rowGap, columnGap
A styled text component with typography support, theme variants, and template rendering.
// Basic text
<Text color="gray-900" fontSize={16}>Hello World</Text>
// Styled heading
<Text fontWeight="Bold" fontSize={24} color="primary">
Welcome Back!
</Text>
// Using theme variants
<Text variant="heading">Heading Text</Text>
<Text variant="body">Body text content</Text>
// Font scaling (relative to base font size)
<Text fontScale={1.5}>Larger Text</Text>
// Dynamic template content (supports handlebars)
<Text content="Hello, {{user.name}}!" />
Props: color, fontSize, fontWeight, fontScale, textAlign, variant, content + standard TextProps
Display icons from various icon libraries with RTL support.
// Basic icon
<Icon icon="home" size={24} color="primary" />
// Different sizes
<Icon icon="settings" size={32} color="gray-600" />
// With press handler
<Icon icon="close" onPress={() => navigation.goBack()} />
// RTL flip support (for directional icons like arrows)
<Icon icon="arrow-right" flipOnRTL />
// Supported icon libraries:
// - material-icons
// - material-community-icons
// - font-awesome-6
// - ionicons
// - simple-line-icons
// - evilicons
// - octicons
// - svg (custom SVG URLs)
Props: icon, size, color, flipOnRTL, onPress
A styled button with multiple variants, sizes, loading states, and icon support.
// Filled button (default)
<Button label="Get Started" color="primary" action={myAction} />
// Outlined button
<Button label="Learn More" variant="outlined" color="secondary" />
// Ghost button (no background)
<Button label="Cancel" variant="ghost" color="gray-600" />
// Dim outlined (subtle border)
<Button label="Optional" variant="dim-outlined" color="primary" />
// Dim filled outlined (subtle background + border)
<Button label="Soft CTA" variant="dim-filled-outlined" color="primary" />
// With icon
<Button label="Add Item" icon="plus" iconPosition="left" color="primary" />
<Button label="Next" icon="arrow-right" iconPosition="right" />
// Different sizes
<Button label="Small" size="sm" />
<Button label="Medium" size="md" />
<Button label="Large" size="lg" />
<Button label="Extra Large" size="xl" />
<Button label="2X Large" size="2xl" />
// Loading state
<Button label="Submitting..." loading={true} />
// Disabled state
<Button label="Unavailable" disabled={true} />
Variants: filled, outlined, dim-outlined, dim-filled-outlined, ghost
Sizes: sm, md, lg, xl, 2xl
Props: label, variant, size, color, textColor, icon, iconPosition, loading, disabled, action
A pressable wrapper with press effects and haptic feedback support.
// Basic actionable area
<Actionable action={navigateAction}>
<Text>Tap me</Text>
</Actionable>
// With scale press effect
<Actionable action={myAction} pressEffect="scale">
<Box padding={16}><Text>Press to scale</Text></Box>
</Actionable>
// With opacity press effect
<Actionable pressEffect="opacity" action={myAction}>
<Image src="card-image.jpg" />
</Actionable>
// With haptic feedback
<Actionable action={myAction} hapticFeedback="impactMedium">
<Text>Haptic button</Text>
</Actionable>
// Combined effects
<Actionable
action={addToCartAction}
pressEffect="bounce"
hapticFeedback="impactLight"
>
<Box backgroundColor="primary" padding={12} borderRadius={8}>
<Text color="white">Add to Cart</Text>
</Box>
</Actionable>
Press Effects:
none - No visual effectopacity - Fades on pressscale - Shrinks slightly on pressscale-opacity - Combines scale and opacitybounce - Bouncy spring effecttilt-left / tilt-right - Tilts on presspulse - Pulsing animationjelly - Elastic jelly effectrubberBand - Rubber band stretch effectglow - Glowing highlight effectpress-in - 3D press-in effectswing - Swinging rotationHaptic Types: impactLight, impactMedium, impactHeavy, rigid, soft, notificationSuccess, notificationWarning, notificationError
A styled image component with preset sizes and template URL support.
// Basic image
<Image src="https://example.com/image.jpg" />
// Using preset sizes
<Image src="product.jpg" size="md" />
<Image src="avatar.jpg" size="xs" />
<Image src="banner.jpg" size="fluid" />
// Custom dimensions
<Image src="photo.jpg" width={200} height={150} />
// With aspect ratio
<Image src="video-thumb.jpg" aspectRatio={16/9} />
// Resize modes
<Image src="cover.jpg" resizeMode="cover" />
<Image src="contain.jpg" resizeMode="contain" />
// With placeholder fallback
<Image src="{{product.image}}" placeholder="default-product.jpg" />
// Dynamic URL with template
<Image src="{{baseUrl}}/images/{{product.id}}.jpg" />
Preset Sizes: 3xs (15px), 2xs (35px), xs (50px), sm (75px), md (150px), lg (275px), xl (300px), 2xl (400px), 3xl (480px), fluid (100%)
Props: src, placeholder, size, width, height, aspectRatio, resizeMode
An image that can contain child elements, perfect for hero sections and cards.
// Hero section
<ImageBackground
src="hero-bg.jpg"
height={300}
justifyContent="center"
alignItems="center"
>
<Text color="white" fontSize={32} fontWeight="Bold">
Welcome
</Text>
</ImageBackground>
// Card with background
<ImageBackground
src="{{product.coverImage}}"
aspectRatio={16/9}
borderRadius={12}
overflow="hidden"
>
<Box position="absolute" bottom={0} left={0} right={0} padding={16} backgroundColor="rgba(0,0,0,0.5)">
<Text color="white">Product Name</Text>
</Box>
</ImageBackground>
// With template URL and placeholder
<ImageBackground
src="{{user.coverPhoto}}"
placeholder="default-cover.jpg"
height={200}
>
{children}
</ImageBackground>
Props: src, placeholder, all Box layout/styling props
A horizontal carousel/slider with multiple pagination styles and autoplay support.
// Basic swiper
<Swiper
data={slides}
renderItem={({ item }) => (
<Image src={item.image} width="100%" aspectRatio={16/9} />
)}
/>
// With autoplay
<Swiper
data={banners}
autoplay
autoplayInterval={3000}
renderItem={({ item }) => <BannerCard banner={item} />}
/>
// Different pagination styles
<Swiper data={items} paginationType="dot" />
<Swiper data={items} paginationType="dash" />
<Swiper data={items} paginationType="line" />
<Swiper data={items} paginationType="number" />
// Custom item width
<Swiper
data={cards}
itemWidth={280}
renderItem={({ item }) => <ProductCard product={item} />}
/>
// With index change callback
<Swiper
data={onboardingScreens}
onIndexChange={(index) => setCurrentStep(index)}
renderItem={({ item }) => <OnboardingSlide {...item} />}
/>
// Using ref for programmatic control
const swiperRef = useRef();
<Swiper ref={swiperRef} data={items} />
<Button label="Next" action={() => swiperRef.current.scrollToIndex(2)} />
Pagination Types: dash, dot, line, number
Props: data, renderItem, autoplay, autoplayInterval, paginationType, paginationStyle, itemWidth, onIndexChange
A utility function to trigger haptic feedback on supported devices.
import { triggerHapticFeedback } from 'types-for-ai';
// On button press
const handlePress = () => {
triggerHapticFeedback('impactMedium');
// ... do something
};
// Success notification
const onSuccess = () => {
triggerHapticFeedback('notificationSuccess');
};
// Error feedback
const onError = () => {
triggerHapticFeedback('notificationError');
};
// Light tap feedback
triggerHapticFeedback('impactLight');
// Heavy impact
triggerHapticFeedback('impactHeavy');
Haptic Types:
impactLight - Light tapimpactMedium - Medium tapimpactHeavy - Heavy taprigid - Rigid impactsoft - Soft impactnotificationSuccess - Success notification patternnotificationWarning - Warning notification patternnotificationError - Error notification patternAll components support styled-system props:
| Category | Props |
|---|---|
| Space | margin, marginTop, marginRight, marginBottom, marginLeft, padding, paddingTop, paddingRight, paddingBottom, paddingLeft, m, mt, mr, mb, ml, p, pt, pr, pb, pl |
| Layout | width, height, minWidth, maxWidth, minHeight, maxHeight, overflow |
| Flexbox | flex, flexDirection, flexWrap, justifyContent, alignItems, alignSelf |
| Border | border, borderWidth, borderColor, borderRadius, borderTop, borderRight, borderBottom, borderLeft |
| Color | color, backgroundColor, bg, opacity |
| Position | position, top, right, bottom, left, zIndex |
| Typography | fontSize, fontWeight, textAlign, lineHeight, fontFamily |
Components automatically use theme values from your styled-components ThemeProvider:
const theme = {
colors: {
primary: '#6366f1',
secondary: '#8b5cf6',
'gray-100': '#f3f4f6',
'gray-900': '#111827',
},
space: [0, 4, 8, 16, 24, 32, 48, 64],
fontWeights: {
Regular: '400',
Medium: '500',
Bold: '700',
},
};
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>
MIT
FAQs
A collection of React Native components with styled-system integration for building beautiful, consistent UI. These components are designed for use with AI-powered code generation tools.
The npm package @evlop/native-components receives a total of 71 weekly downloads. As such, @evlop/native-components popularity was classified as not popular.
We found that @evlop/native-components demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.