• Stars
    star
    210
  • Rank 187,585 (Top 4 %)
  • Language
    JavaScript
  • License
    Mozilla Public Li...
  • Created about 7 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A flag utility for styled-components

styled-is

npm License: MPL 2.0 standard-readme compliant Greenkeeper badge

David David

Flag utility for styled-components.

Table of Contents

Install

yarn add styled-is

Usage

is, isNot, isOr, isSomeNot are used for boolean props and can check one or more props at a time is(prop1, prop2, ...).

match is used to check the value of a prop match(prop, value).

Functions can also be passed to all of the above to allow for more complex prop-checking. Any functions passed in will automatically be called with the component's props. For example if you wanted to handle a button with only an icon differently for different sizes:

${match("size", "large")`
      font-size: 12px;
      ${props =>
        props.icon && !props.content
          ? `width: 3rem;`
          : `min-width: 6rem;`}
    `};

${match("size", "small")`
      font-size: 9px;
      ${props =>
        props.icon && !props.content
          ? `width: 1.5rem;`
          : `min-width: 3rem;`}
    `};

Examples

import is, { isNot, isOr, isSomeNot, match } from 'styled-is';
import styled from 'styled-components';

const Div = styled.div`
  display: block;
  opacity: 0;

  ${is('red')`
    background-color: red;
  `};

  ${is('blue')`
    background-color: blue;
  `};

  ${is('red', 'blue')`
    opacity: 1;
  `};

  ${is('left')`
    float: left;
  `};

  ${is('right')`
    float: right;
  `};

  ${isNot('left', 'right')`
    float: center;
  `};

  ${isOr('left', 'right')`
    position: relative;
  `};

  ${isSomeNot('red', 'left')`
    wat: 1;
  `};

  ${match('size', 'large')`
    height: 64px;
  `};

  ${is('green')`
    background-color: green;
    ${props => (props.size === 'small' ? `width: 3rem;` : `width: 6rem;`)}
  `};
`;
// display: block;
// opacity: 0;
// float: center;
// wat: 1;
<Div>

// display: block;
// opacity: 0;
// background-color: red;
// opacity: 1;
// float: center;
// wat: 1;
<Div red>

// display: block;
// opacity: 0;
// background-color: red;
// opacity: 1;
// float: left;
// position: relative;
<Div red left>

// display: block;
// opacity: 0;
// background-color: red;
// opacity: 1;
// float: left;
// position: relative;
// height: 64px;
<Div red left size='large'>

// display: block;
// opacity: 0;
// float: center;
// wat: 1;
// background-color: green;
// width: 6rem;
<Div green>

// display: block;
// opacity: 0;
// float: center;
// wat: 1;
// background-color: green;
// width: 3rem;
<Div green size='small'>

License

MPL-2.0

More Repositories

1

skiff

Raft Consensus for Node.js, backed by LevelDB
JavaScript
247
star
2

pouch-redux-middleware

PouchDB Redux Middleware
JavaScript
184
star
3

graphql-workshop

GraphQL Workshop Material
JavaScript
175
star
4

pouch-websocket-sync-example

Pouch Stream example
JavaScript
147
star
5

normalized-styled-components

normalize.css with a styled-components mindset
JavaScript
50
star
6

pouch-websocket-sync

PouchDB live sync through websockets
JavaScript
46
star
7

react-topology

Create Topology views with SVG and React
JavaScript
45
star
8

joyent-portal

JavaScript
44
star
9

kubernetes-auth

👩‍💻🔐 Log into k8s clusters using dex with a nice UI
Go
34
star
10

career-framework

Framework for career progression @ YLD
28
star
11

react-lazy-youtube

React Component for lazy loading youtube videos
JavaScript
25
star
12

react-native-wearables

React Native common interface for iOS and Android wearables
JavaScript
23
star
13

react-native-offline-first

React Native offline first with pouchdb
JavaScript
23
star
14

react-example

JavaScript
21
star
15

yld.io

YLD Website
JavaScript
19
star
16

serverpush-serviceworkers-example

HTTP/2 Server Push & Service Workers example
JavaScript
18
star
17

message-queue

a standard interface to access message queues
JavaScript
17
star
18

pouch-clerk

PouchDB worker reacting to document changes
JavaScript
17
star
19

native-iso-relay

JavaScript
16
star
20

asap-hub

The monorepo for the backend, frontend, and infrastructure of the ASAP hub.
TypeScript
15
star
21

standards

The standard way of doing things in YLD
12
star
22

pouch-remote-stream

Remote Stream for PouchDB
JavaScript
12
star
23

cloud-pizza-place

Our pizza oven is serverless, hot and always ready for baking cheesy items from the YLD menu!
JavaScript
11
star
24

pouch-stream-multi-sync

Sync various PouchDBs over a stream
JavaScript
11
star
25

copilot

JavaScript
10
star
26

license-bot

🐙🤖 A Github bot to help with Open-Source license conformence
Go
10
star
27

borough

Borough
JavaScript
9
star
28

training-node-angular-source-code

Angluar and Node Training Source Code
JavaScript
8
star
29

bpf-nodejs

Using BPF (http://iovisor.github.io/bcc/) with Node.js
Python
8
star
30

redux-replaceable-middleware

Redux Replaceable Middleware
JavaScript
7
star
31

website

Shiny new website
JavaScript
7
star
32

whisper-ui

Helper native app to run whisper on local machines.
Rust
7
star
33

remcalc

Calculate the rem's from px values.
JavaScript
6
star
34

staff-recommendations

Need help? Need ideas? Do you have ideas? Check our guides!
6
star
35

disclosure

Project dependencies overview
JavaScript
6
star
36

pseudo-yaml-ast

JavaScript
6
star
37

vue-styled-is

Flag utility for styled-components in vue
JavaScript
6
star
38

pouch-clerk-example-app

Pouch Clerk Example App
JavaScript
5
star
39

react-grid-debugger

Visual Tool for debugging grid-based layouts built on React
JavaScript
5
star
40

metrics-yall

Make them pretty metrics 🚀
JavaScript
5
star
41

node-lambda-example

Example of a Node.js Lambda function
Makefile
4
star
42

teg-august-training-node-code

JavaScript
4
star
43

alpine-node-containerpilot

🐳 - 🏔🐢🗃🛩
Shell
3
star
44

oss-stats

JavaScript
3
star
45

react-native-wearables-demo

Objective-C
3
star
46

razzle-plugin-stylable

Get stylable running in your razzle installation
JavaScript
3
star
47

website-contentful-data-transfer

Standalone script that fetched up-to-date info from associated services (Meetup, YouTube) and creates new Contentful entries as necessary
JavaScript
3
star
48

eslint-config-joyent-portal

JavaScript
3
star
49

relay-starter

JavaScript
2
star
50

heart-rate-validating-admission-webhook

Capture your heart-rate in Node.js and perform action based on the data!
JavaScript
2
star
51

chartjs-chart-box-plot

📈 A Box-plot implementation for chart.js
JavaScript
2
star
52

BackendCSharpHomeCodeChallengeBase

Backend C# Challenge
C#
2
star
53

deeplinking-poc

Deeplinking proof of concept
Kotlin
2
star
54

kubernetes-usage

Reporting tool of usage of resources on kubernetes
Shell
2
star
55

joyent-react-scripts

JavaScript
1
star
56

docker-compose-api

Python
1
star
57

coding-challenge

CSS
1
star
58

babel-preset-joyent-portal

JavaScript
1
star
59

react-screenshot-renderer

JavaScript
1
star
60

hello-world

JavaScript
1
star
61

Referral-Links

Referral links
1
star
62

bench-node-cluster

JavaScript
1
star
63

unitcalc

JavaScript
1
star
64

ecs-docker-test-app

ECS Docker Test App
JavaScript
1
star
65

conference-template

Template project to create websites for YLD's conferences
TypeScript
1
star
66

rnd-id

JavaScript
1
star