GithubHelp home page GithubHelp logo

jrolfs / design-tokens Goto Github PK

View Code? Open in Web Editor NEW

This project forked from opentable/design-tokens

0.0 1.0 0.0 6.03 MB

A place where OpenTable engineers and designers openly work together

Home Page: https://opentable.github.io/design-tokens/

License: MIT License

JavaScript 91.02% CSS 8.98%

design-tokens's Introduction

design-tokens

Design Tokens repository is the central location to store shared design attributes such as colors, fonts, widths, animations, etc. These attributes can then be transformed and formatted to meet the needs of different projects, teams and platforms.


Table of Contents generated with DocToc

Project structure

A token is a set of design attributes bundled together around a common theme.

We have two sets of design tokens available to consume.

OTKit

Standard design tokens. Use them if you are following the new design guidelines.

Token Available Formats Version
otkit-borders scss, cssmodules.css, common.js npm version
otkit-breakpoints scss, cssmodules.css, common.js npm version
otkit-colors scss, cssmodules.css, common.js npm version
otkit-icons scss, cssmodules.css npm version
otkit-shadows scss, cssmodules.css, common.js npm version
otkit-spacing scss, cssmodules.css, common.js npm version
otkit-typography (DEPRECATED) scss, cssmodules.css, common.js npm version
otkit-typography-desktop scss, cssmodules.css, common.js npm version

OTTheme

Legacy design tokens. Use them if you need the classic look and feel of OpenTable Theme.

Token Available Formats Version
ottheme-colors scss, cssmodules.css, common.js npm version
ottheme-spacing scss, cssmodules.css, common.js npm version

Usage

Install the token

$ npm install --save-dev <token-name>

Use the token

A Token exposes multiple available formats (listed above). The format needs to be explicitly referenced upon requiring/importing the token:

require('<token-name>/token.<format>')

Example: using different formats

// cssmodules example:
@value color-primary from 'otkit-colors/token.cssmodules.css';

// common.js require/import examples:
const color = require('otkit-colors/token.common.js');
import color from 'otkit-colors/token.common.js';

// scss example:
@import '../node_modules/ottheme-colors/token.scss';

Example: set your base font size

@value font-size-base from 'otkit-typography/token.cssmodules.css';

html {
  font-size: font-size-base;
}

Pixel to Rem conversion

All contributions to this project should be in pixels. For users of these tokens, you will have to install postcss-pxtorem to handle the pixel to rem conversion in your CSS files.

npm install --save-dev postcss-pxtorem

Then add it to your postcss processors with the following recommended configuration:

import pxtorem from 'postcss-pxtorem';
import { fontSizeBase } from 'otkit-typography/token.cssmodules.css';

const processors = [
  pxtorem({
    // fontSizeBase = '16px'.  Need to convert to 16.
    rootValue: parseInt(fontSizeBase, 10),
    selectorBlackList: [/^html$/],
    replace: true
  })
];

Note that depending on how you use postcss, your processors array may be in a JSON configuration file instead.

If you're not already using postcss, you will either have to use it as an additional build step after you transform your CSS with your current tool or use it as a complete replacement for your current CSS transformation process.

Development

Preview and debug

Executing npm run build will generate the token values in each token's folder, such as token.scss or other available formats you specified.

When you publish a token (more on that below), this step is executed as part of the publishing.

If you are using a token in your project, you can execute npm link '<token-name>' in node_modules folder to test the token values before publishing.


Contribution

Please refer to the contributing doc

design-tokens's People

Contributors

cbeley avatar dependencies-bot avatar dipunm avatar ericz82 avatar francesyun avatar greenkeeper[bot] avatar jrolfs avatar jwhyte88 avatar karuto avatar lastquestion avatar lindseyhight avatar lizgersh avatar mannionaco avatar matteofigus avatar nickbalestra avatar opentable-devops avatar ronniechong avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.