@dawiidio/quarksy
TypeScript icon, indicating that this package has built-in type declarations

0.0.6 • Public • Published

@dawiidio/quarksy

This is a small, 0-dependency design-tokens parser. What are design tokens? For example, you may check out figma and their Tokens Studio to learn more. In one sentence: tokens are single source of truth for both designers and developers saved in json file which you can export from e.g. Figma tool.

For example, it can generate css output for tokens like the below example:

:root {
    --sizing-base: 2px;
    --sizing-xs: 4px;
    --sizing-s: 8px;
    --sizing-m: 24px;
    --sizing-l: 24px;
    --sizing-xl: 32px;
    --colors-primary-100: #c7fadb;
    --colors-primary-500: #05eb62;
    --colors-primary-900: #066d2f;
    --colors-secondary-100: #e9d5f8;
    --colors-secondary-500: #941bf0;
    --colors-secondary-900: #3e046a;
    --font-size-s: 14px;
    --font-size-m: 16px;
    --font-size-l: 24px;
    --font-size-xl: 36px;
    --border-radius-m: 6px;
    --font-family-primary: Ubuntu;
    --font-family-secondary: Nunito;
    --font-weight-bold: 800;
    --font-weight-thin: 300;
    --font-weight-normal: 500;
    --spacing-s: 4px;
    --spacing-m: 8px;
    --spacing-l: 24px;
}

.typography-H3 { 
   font-family: Nunito;
   font-weight: 500;
   font-size: 36px; 
}

.typography-Body1 { 
   font-family: Ubuntu;
   font-weight: 300;
   font-size: 16px; 
}

it will resolve all token aliases like the below ones

{
  "typography": {
    "H3": {
      "value": {
        "fontFamily": "{fontFamily.secondary}",
        "fontWeight": "{fontWeight.normal}",
        "fontSize": "{fontSize.xl}"
      },
      "type": "typography"
    }
  }
}

to these values:

.typography-H3 { 
   font-family: Nunito;
   font-weight: 500;
   font-size: 36px; 
}

Installation

npm i @dawiidio/quarksy

// or

yarn add @dawiidio/quarksy

Cli usage

Usage: quarksy [options] [inputFile]

Transforms design tokens to code

Arguments:
  inputFile                    tokens file to be transformed (default: "tokens.json")

Options:
  -V, --version                output the version number
  -p, --platform <string...>   for which platforms you want to transform your tokens (default: ["css"])
  --token-prefix <string>      prefix for token variable names
  --token-set-prefix <string>  prefix for token sets variable names, eg. typography which may be build of many
                               properties
  -o, --output-dir <string>    output directory
  -h, --help                   display help for command

Programmatic usage

Below you can see simple example, for implementation hints see src/platforms/CssPlatform.ts

import {
    TokensObjectParser,
    writePlatformOutputToFileSystem,
    Platform
} from '@dawiidio/quarksy';

async function main() {
    const myDesignTokensObject = {
        // json export from eg. Figma tokens
    };

    const tokensObjectParser = new TokensObjectParser(myDesignTokensObject);

    class MyPlatform extends Platform {
        run(tokensObject: TokensObjectParser): [string, string][] {
            // do something to transform tokensObject to platform specific code
            return []
        }
    }

    const myPlatform = new MyPlatform();
    
    await writePlatformOutputToFileSystem(myPlatform.run(tokensObjectParser));
}

Supported platforms

For now only CSS, soon will be more :)

Package Sidebar

Install

npm i @dawiidio/quarksy

Weekly Downloads

1

Version

0.0.6

License

ISC

Unpacked Size

25.1 kB

Total Files

20

Last publish

Collaborators

  • dawiidio