0.5.10 • Published 3 years ago

style-composer v0.5.10

Weekly downloads
121
License
MIT
Repository
github
Last release
3 years ago

style-composer · GitHub license npm version

Straightforward cross platform styling for React Native and the web

npm i style-composer

Note: this package is in early development, use with caution

Features

  • Descending styles
  • Theming
  • Native & web support
  • Media queries

Usage

Composing Classes

// Card.style.ts
import {composeClass} from "style-composer";

export const $Card = composeClass("card", () => ({
    fontSize: 14,
    color: "#333",
})).build();

We can now use this style with the following snippet which automatically descend the color and font size down to the styled text:

import {StyledView, StyledText} from "style-composer";
import {$Card} from "./Card.style";

<StyledView classes={[$Card]}>
    <StyledText>hi</StyledText>
</StyledView>

Note: when composing classes the function passed to generate your styles should be pure

Using Classes

Classes can be added to styled components easily, also interacting with the style prop just as you would think:

<StyledView classes={$Card} style={{backgroundColor: "red"}}/>

<StyledView classes={[$Card, $BigMargin]}/>

// you can use classList to easily compose a deep list of classes
<StyledView classes={classList([$Card, $BigMargin], disabled && $CardDisabled)}/>

Media Queries

import {media} from "style-composer";

export const $Card = composeClass("card", () => ({
    padding: 10,
    fontSize: 20,

    // when screen is smaller than 500px, apply these rules
    [media({maxWidth: 500})]: {
        padding: 5,
        fontSize: 14
    }
})).build();

Theming

  1. Create themable values:

    import {themePlan} from "style-composer";
    
    export const THEMING = themePlan({
        textColor: "#333",
        backgroundColor: "#fff",
    });
  2. Use them in your classes:

    import {composeClass} from "style-composer";
    
    export const $AppContainer = composeClass("app-container", () => ({
        backgroundColor: THEMING.backgroundColor(),
        color: THEMING.textColor(),
    })).build();
  3. Use a ThemeProvider to change these values in your app:

    import {ThemeProvider, StyledView, StyledText} from "style-composer";
    
     // dark theme
    const App = () => {
        return <ThemeProvider plan={THEMING} value={{
            textColor: "rgba(255,255,255,0.97)",
            backgroundColor: "#333"
        }}>
            <StyledView classes={[$AppContainer]}>
                <StyledText>hi!</StyledText>
            </StyledView>
        </ThemeProvider>;
    };
0.6.0-alpha13

3 years ago

0.6.0-alpha12

3 years ago

0.6.0-alpha10

3 years ago

0.6.0-alpha11

3 years ago

0.6.0-alpha8

3 years ago

0.6.0-alpha7

3 years ago

0.6.0-alpha9

3 years ago

0.6.0-alpha6

3 years ago

0.6.0-alpha5

3 years ago

0.6.0-alpha4

3 years ago

0.6.0-alpha2

3 years ago

0.6.0-alpha3

3 years ago

0.6.0-alpha1

3 years ago

0.5.10

3 years ago

0.5.9

3 years ago

0.5.8

3 years ago

0.5.7

3 years ago

0.5.7-beta2

3 years ago

0.5.7-beta1

3 years ago

0.5.7-beta3

3 years ago

0.5.6-beta7

3 years ago

0.5.6

3 years ago

0.5.6-beta6

3 years ago

0.5.6-beta5

3 years ago

0.5.6-beta4

3 years ago

0.5.6-beta3

3 years ago

0.5.6-beta2

3 years ago

0.5.6-beta1

3 years ago

0.5.5

3 years ago

0.5.4

3 years ago

0.5.3

3 years ago

0.5.2

3 years ago

0.5.1

3 years ago

0.5.0

3 years ago

0.5.0-alpha15

3 years ago

0.5.0-alpha14

3 years ago

0.5.0-alpha13

3 years ago

0.5.0-alpha12

3 years ago

0.5.0-alpha11

3 years ago

0.5.0-alpha10

3 years ago

0.5.0-alpha9

3 years ago

0.5.0-alpha8

3 years ago

0.5.0-alpha7

3 years ago

0.5.0-alpha5

3 years ago

0.5.0-alpha6

3 years ago

0.5.0-alpha3

4 years ago

0.5.0-alpha2

4 years ago

0.5.0-alpha1

4 years ago

0.4.1-alpha1

4 years ago

0.4.0

4 years ago

0.4.0-beta17

4 years ago

0.3.1

4 years ago

0.4.0-beta16

4 years ago

0.4.0-beta15

4 years ago

0.4.0-beta14

4 years ago

0.4.0-beta13

4 years ago

0.4.0-beta12

4 years ago

0.4.0-beta11

4 years ago

0.4.0-beta10

4 years ago

0.4.0-beta9

4 years ago

0.4.0-beta8

4 years ago

0.4.0-beta4

4 years ago

0.4.0-beta6

4 years ago

0.4.0-beta5

4 years ago

0.4.0-beta7

4 years ago

0.4.0-beta3

4 years ago

0.4.0-beta2

4 years ago

0.4.0-beta1

4 years ago

0.4.0-alpha15

4 years ago

0.4.0-alpha13

4 years ago

0.4.0-alpha12

4 years ago

0.4.0-alpha11

4 years ago

0.4.0-alpha8

4 years ago

0.4.0-alpha9

4 years ago

0.4.0-alpha10

4 years ago

0.4.0-alpha7

4 years ago

0.4.0-alpha6

4 years ago

0.4.0-alpha5

4 years ago

0.4.0-alpha3

4 years ago

0.4.0-alpha4

4 years ago

0.4.0-alpha2

4 years ago

0.3.0

4 years ago

0.4.0-alpha1

4 years ago

0.3.0-alpha7

4 years ago

0.3.0-alpha8

4 years ago

0.3.0-alpha6

4 years ago

0.3.0-alpha5

4 years ago

0.3.0-alpha4

4 years ago

0.3.0-alpha3

4 years ago

0.3.0-alpha2

4 years ago

0.3.0-alpha1

4 years ago

0.2.0-beta5

4 years ago

0.2.0

4 years ago

0.2.0-beta4

4 years ago

0.2.0-beta3

4 years ago

0.2.0-beta2

4 years ago

0.2.0-beta1

4 years ago

0.2.0-alpha6

4 years ago

0.2.0-alpha5

4 years ago

0.2.0-alpha4

4 years ago

0.2.0-alpha3

4 years ago

0.2.0-alpha2

4 years ago

0.2.0-alpha1

4 years ago

0.1.10

4 years ago

0.1.9

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.2

4 years ago

0.1.3

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.1.0-beta17

4 years ago

0.1.0-beta16

4 years ago

0.1.0-beta15

4 years ago

0.1.0-beta9

4 years ago

0.1.0-beta8

4 years ago

0.1.0-beta12

4 years ago

0.1.0-beta11

4 years ago

0.1.0-beta14

4 years ago

0.1.0-beta13

4 years ago

0.1.0-beta10

4 years ago

0.1.0-beta6

4 years ago

0.1.0-beta5

4 years ago

0.1.0-beta3

4 years ago

0.1.0-beta4

4 years ago

0.1.0-beta2

4 years ago

0.1.0-alpha18

4 years ago

0.1.0-beta1

4 years ago

0.1.0-alpha17

4 years ago

0.1.0-alpha16

4 years ago

0.1.0-alpha14

4 years ago

0.1.0-alpha13

4 years ago

0.1.0-alpha15

4 years ago

0.1.0-alpha2

4 years ago

0.1.0-alpha3

4 years ago

0.1.0-alpha4

4 years ago

0.1.0-alpha6

4 years ago

0.1.0-alpha7

4 years ago

0.1.0-alpha8

4 years ago

0.1.0-alpha9

4 years ago

0.1.0-alpha10

4 years ago

0.1.0-alpha12

4 years ago

0.1.0-alpha11

4 years ago

0.0.1-alpha3

4 years ago

0.0.1-alpha4

4 years ago

0.0.1-alpha1

4 years ago

0.0.1-alpha2

4 years ago

0.0.0

4 years ago