JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 7090183
  • Score
    100M100P100Q198635F
  • License MIT

Convert CSS text to a React Native stylesheet object

Package Exports

  • css-to-react-native

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (css-to-react-native) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

css-to-react-native

Converts CSS text to a React Native stylesheet object.

font-size: 18;
line-height: 24;
color: red;
{
  fontSize: 18,
  lineHeight: 24,
  color: 'red',
}

Converts all number-like values to numbers, and string-like to strings.

Automatically converts indirect values to their React Native equivalents.

text-shadow-offset: 10 5;
font-variant: small-caps;
transform: translate(10, 5) scale(5);
{
  textShadowOffset: { width: 10, height: 5 },
  fontVariant: ['small-caps'],
  // Fixes backwards transform order
  transform: [
    { translateY: 10 },
    { translateX: 10 },
    { scale: 5 },
  ]
}

Also allows shorthand values.

font: bold 14/16 "Helvetica";
margin: 5 7 2;
{
  fontFamily: 'Helvetica',
  fontSize: 14,
  fontWeight: 'bold',
  fontStyle: 'normal',
  fontVariant: [],
  lineHeight: 16,
  marginTop: 5,
  marginRight: 7,
  marginBottom: 2,
  marginLeft: 7,
}

Shorthands will only accept values that are supported in React, so background will only accept a colour, backgroundColor

Shorthand Notes

border{Top,Right,Bottom,Left} shorthands are not supported, because borderStyle cannot be applied to individual border sides.

flex does not support putting flexBasis before flexGrow. The supported syntax is flex: <flex-grow> <flex-shrink> <flex-basis>.

API

The API is mostly for implementors. However, the main API may be useful for non-impmentors. The main API is,

import transform from 'css-to-react-native';
// or const transform = require('css-to-react-native').default;

transform([
  ['font', 'bold 14/16 "Helvetica"'],
  ['margin', '5 7 2'],
  ['border-left-width', '5'],
]); // => { fontFamily: 'Helvetica', ... }

For implementors, there is also,

import { getPropertyName, getStylesForProperty } from 'css-to-react-native';

getPropertyName('border-width'); // => 'borderWidth'
getStylesForProperty('borderWidth', '1 0 2 0'); // => { borderTopWidth: 1, ... }

License

Licensed under the MIT License, Copyright © 2016 Jacob Parker and Maximilian Stoiber.

See LICENSE.md for more information.