npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

react-native-css-stylesheet

v1.0.1

Published

Create responsive design with the help of css queries

Readme

react-native-css-stylesheet

Create responsive design with the help of css queries

Installation

npm install react-native-css-stylesheet

Usage

Define styles using CssStyleSheet.create() instead of StyleSheet.create()

import React from "react";
import { Text, View } from "react-native";

import CssStyleSheet from "react-native-css-stylesheet";

const Example = () => {
	return (
		<View style={styles.container}>
			<Text style={styles.text}>Example</Text>
		</View>
	);
};

const { styles } = CssStyleSheet.create({
	text: {
		"(orientation: landscape)": {
			fontSize: "3rem",
		},
		fontSize: "2rem",
		marginVertical: 20,
	},
	container: {
		alignItems: "center",
		flex: 1,
		justifyContent: "center",
	},
});

Styling Options

Size with custom units

| Unit | Description | Example | | ------------------- | ------------------------------------------------------------------------------------------------------- | ------------------ | | <size>s | scales size in a linear manner relative to screen width | 7.5s | | <size>vs | scales size in a linear manner relative to screen height | 9vs | | <size>ms<factor> | scales size in a linear manner relative to screen width. factor is resize factor. Default is 0.5 | 7ms or 7ms0.25 | | <size>mvs<factor> | scales size in a linear manner relative to screen height. factor is resize factor. Default is 0.5 | 9ms or 9ms0.75 | | <size>rem | size relative to the default font size | 1rem | | <size>vw | size relative to the window width | 1.02vw | | <size>vh | size relative to the window height | 10vh | | <size>vmin | size relative to the shortest dimension compared between window width and height | 10vmin | | <size>vmax | size relative to the largest dimension compared between window width and height | 10vmax |

Note:

  1. size can be any positive number (including decimal) for s, vs, ms, and mvs
  2. size can be any positive number ranging from 0 to 100 (including decimal) for rem, vw, vh, vmin, and vmax
  3. factor can be any positive number ranging from 0 and 1 (including decimal)

Queries

| Query | Supported Values | Description | Example | | ------------------------ | ------------------------------------------------ | ---------------------------------------------------------- | ---------------------------------------------------------------- | | (orientation: <value>) | portrait or landscape | Matches the orientation with the provided value | 1. (orientation: landscape) 2. (orientation: portrait) | | (min-width: <value>) | custom size or number | Matches the minimum window width with the provided value. | 1. (min-width: 320) 2. (min-width: 10s) | | (max-width: <value>) | custom size or number | Matches the maximum window width with the provided value. | 1. (max-width: 600) 2. (max-width: 10rem) | | (min-height: <value>) | custom size or number | Matches the minimum window height with the provided value. | 1. (min-height: 600) 2. (min-height: 15vs) | | (max-height: <value>) | custom size or number | Matches the maximum window height with the provided value. | 1. (max-height: 1200) 2. (max-height: 25mvs0.75) |

Note:

  1. Brackets around queries are compulsory.
  2. Any custom size defined in the above section will work, but using units like vw, vh, vmin, or vmax would always result in true since they are relative to the window with and height.

Grouping Queries

| Keyword | Description | Example | | --------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- | | <query> and <query> | Applies the styles if queries preceding and succeeding to the keyword and is true. | (orientation: landscape) and (min-width:320) | | <query> , <query> | Applies the styles if either of the queries preceding and succeeding to the keyword , is true. | (min-height: 600) , (min-width:320) | | (<queries>) | Create group of queries if you have more than one conditional keyword | ((orientation: landscape) and (min-width:320)),((orientation: portrait) and (min-height:600)) |

API

create (styles)

A function which returns computed styles on the basis of media queries specified.

Arguments

  1. styles (object) : A style object either the normal or with custom properties and queries.

Return

  • cssStyleSheet (object)

    • styles (object): A style object which is generated during application start. See basic example above.

    • responsiveStyles (Function): A function to regenerate the styles during run time. When used inside a component, it will generate a new style object every time the component updates. See example below.

Example

import React from "react";
import { Text, View } from "react-native";

import CssStyleSheet from "react-native-css-stylesheet";

const Example = () => {
	const styles = responsiveStyles();
	return (
		<View style={styles.container}>
			<Text style={styles.text}>Example</Text>
		</View>
	);
};

const { responsiveStyles } = CssStyleSheet.create({
	text: {
		"(orientation: landscape)": {
			fontSize: "3rem",
		},
		fontSize: "2rem",
		marginVertical: 20,
	},
	container: {
		alignItems: "center",
		flex: 1,
		justifyContent: "center",
	},
});

useCssStyleSheet (responsiveStyles)

Hook which returns recalculated styles every time there is a dimension change.

Arguments

  1. responsiveStyles (Function) : responsiveStyles function returned from create function.

Return

  • styles (object): An object which is recalculated every time dimension change happens. See example below.

Example

import React from "react";
import { Text, View } from "react-native";

import CssStyleSheet, { useCssStyleSheet } from "react-native-css-stylesheet";

const ResponsiveFunctionExample = () => {
	const styles = useCssStyleSheet(responsiveStyles);
	return (
		<View style={styles.container}>
			<Text style={styles.text}>ResponsiveFunctionExample</Text>
		</View>
	);
});

const { responsiveStyles } = CssStyleSheet.create({
	text: {
		"(orientation: landscape)": {
			fontSize: "3rem",
		},
		fontSize: "2rem",
		marginVertical: 20,
	},
	container: {
		alignItems: "center",
		flex: 1,
		justifyContent: "center",
	},
});

export default ResponsiveFunctionExample;

withCssStyleSheet (responsiveStyles, Component)

Link a style sheet with a component using the higher-order component pattern. It does not modify the component passed to it; instead, it returns a new component with a cssStyleSheet prop. This prop contains the responsive style object which gets recalculated every time there is a dimension change detected. This props can be used as a normal style object.

  • It adds a cssStyleSheet prop.
  • It forwards refs to the inner component.

Arguments

  1. responsiveStyles (Function) : responsiveStyles function returned from create function.

  2. Component (React Element) : The component that will be wrapped

Return

  • Component (React Element): The new component created.

Example

import React from "react";
import { Text, View } from "react-native";

import CssStyleSheet, { withCssStyleSheet } from "react-native-css-stylesheet";

class ClassWithoutStyleSheet extends React.Component {
	render() {
		const { cssStyleSheet } = this.props;
		return (
			<View style={cssStyleSheet.container}>
				<Text style={cssStyleSheet.text}>ResponsiveClassExample</Text>
			</View>
		);
	}
}

const { responsiveStyles } = CssStyleSheet.create({
	text: {
		"(orientation: landscape)": {
			fontSize: "3rem",
		},
		fontSize: "2rem",
		marginVertical: 20,
	},
	container: {
		alignItems: "center",
		flex: 1,
		justifyContent: "center",
	},
});

const ResponsiveClassExample = withCssStyleSheet(responsiveStyles, ClassWithoutStyleSheet);

export default ResponsiveClassExample;

/**
 * OR
 * export default withCssStyleSheet(responsiveStyles, ClassWithoutStyleSheet);
 */

Todo

  • [ ] Add Examples screenshot/gif
  • [ ] Nested queries support
  • [ ] Platform based media queries

License

MIT