0.0.10 • Published 4 years ago

styled-view v0.0.10

Weekly downloads
34
License
MIT
Repository
github
Last release
4 years ago

✌️ Styled View

Build Status Coverage Status Bundle size

UI Primitive for React, with CSS-in-JS support

Table of contents

Installation

npm install styled-view

Usage

The <View> component supports all of the default CSSProperties as props. The styles transformed and handled by Emotion.

import React from 'react';
import { View } from 'styled-view';

function Example() {
	return (
		<View backgroundColor="#eee" padding={20}>
			Hello
		</View>
	);
}

css function

css is a utility function that works with the <View /> css prop. The API is similar to the Emotion's css prop. Unlike the css prop, the tagged template literal allows for functions, which is handy for mixins.

import React from 'react';
import { css, View } from 'styled-view';

function Example() {
	const variant = ({ variant }) => {
		switch (variant) {
			case 'primary':
				return `
					background-color: blue;
					color: white;
			`;
			default:
				return `
				background-color: yellow;
			`;
		}
	};

	return (
		<View
			backgroundColor="#eee"
			padding={20}
			css={css`
				${variant};
				&:hover {
					transform: scale(1.2);
				}
			`}
		>
			Hello
		</View>
	);
}

css prop

<View /> accepts a special css prop, which allows you to write styles, just like the css prop or styled component from Emotion.

import React from 'react';
import { View } from 'styled-view';

function Example() {
	const css = `
		&:hover {
			background-color: blue;
			color: white;
		}

		@media (min-width: 768px) {
			padding: 40px;
		}
	`;

	return (
		<View backgroundColor="#eee" padding={20} css={css}>
			Hello
		</View>
	);
}

sx prop

<View /> accepts a special sx prop, which allows you to write style objects.

import React from 'react';
import { View } from 'styled-view';

function Example() {
	return <View sx={{ backgroundColor: 'pink', padding: 20 }}>Hello</View>;
}

Mixins

<View /> can render mixins (function) when passed into the css function. This enables integration with libraries like Styled Systems. It also enable you to add your very own custom mixins!

import React from 'react';
import { space, layout, typography, color } from 'styled-system';
import { css, View } from 'styled-view';

// Add styled-system functions to your component
function Box(props) {
	return (
		<View
			{...props}
			css={css`
				${space};
				${layout};
				${typography};
				${color};
			`}
		/>
	);
}

function Example() {
	return (
		<Box p={4} bg="#ddd" borderRadius={8}>
			Hello
		</Box>
	);
}

This concepts was inspired by James Newell ❤️!

Theming

Theming <View /> works as specified by Emotion Theming.

import React from 'react';
import { ThemeProvider } from 'emotion-theming';
import { View } from 'styled-view';

const theme = {
	fontFamily: 'arial',
};

function Example() {
	return (
		<ThemeProvider theme={theme}>
			<View>Hello</View>
		</ThemeProvider>
	);
}