Skip to content

Commit

Permalink
[#181944040] generate variables from tokens (#4)
Browse files Browse the repository at this point in the history
* playing around with theme switcher

* pivotal-181957167 switch theme css

* pivotal-181957167 pass tokens via context

* pivotal-181944040 generate css variables (WIP)

* pivotal-181944040 add parser for reference syntax, merge all tokens into one file, handle shadows and typography (WIP)

* pivotal-181944040 make references work in style-dictionary by removing global key

* pivotal-181944040 refactor

* pivotal-181944040 add token config for js

* pivotal-181944040 change output to json and use generated tokens in color palette

* pivotal-181944040 expand typography tokens

* add a bit more info to readme
  • Loading branch information
josefie authored May 24, 2022
1 parent be657de commit 01dfb8e
Show file tree
Hide file tree
Showing 29 changed files with 1,596 additions and 71 deletions.
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ app/javascript/shared/i18n.ts
config/**/*.js
vite.config.ts
node_modules
sd.config.js
storybook-static
dist
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ coverage
.history
app/javascript/gql/generated.ts
app/javascript/shared/i18n.ts
build
38 changes: 24 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,37 @@
# Projectname
# Betterplace Design System

What it does nobody knows.
This is the repository for [betterplace](https://www.betterplace.org/)'s design system.

## Overview
The system uses [Storybook](https://storybook.js.org/) as a tool for developing a component library, guidelines and documentation, that work across all betterplace platforms.

Only needed if lengthy
- [🔧 Setup](#-1-Setup)
- [💻 Development](#-Development)
- [📦 Data model](#-Data-model)
## 🔧 Setup

1. `git clone [email protected]:betterplace/betterplace-design-system.git`
2. `cd betterplace-design-system`
3. `yarn install`
4. `yarn storybook`

## 🔧 1 Setup
## Dependencies

How to set it up.
See [.tool-versions](.tool-versions)

### ...
## 💻 Development

## Dependencies
### Scripts

## 💻 Development
| Command | Description |
| ---------------------- | ---------------------------------------- |
| `yarn storybook` | Start and open storybook in the browser. |
| `yarn build-storybook` | Build static storybook output. |
| `yarn build-tokens` | Generate all CSS variables from tokens. |

### Design Tokens

We use Design Tokens exported by [Figma Tokens](https://docs.tokens.studio/) and generate CSS variables from these tokens using [Style Dictionary](https://amzn.github.io/style-dictionary/#/).

The tokens input file is located in [config/tokens.json](config/tokens.json) (the exported file from Figma). The generated output is located in the [build](build) folder. Each theme is generated into its own file with variables, that would override each other. This is by design, because we only include one of these at a time. For example, theme org would include [build/css/themes/org.css](build/css/themes/org.css). Additionally, a [globals.css](build/css/globals.css) is generated, which includes only unique global tokens.

You might want to link to an [Architectural overview](doc/architecture.md)
here, if you have one:
To re-generate tokens with style-dictionary, run the following command: `yarn build-tokens`

### 📦 Data model

Expand Down
187 changes: 187 additions & 0 deletions build/css/globals.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
/**
* Do not edit directly
* Generated on Thu, 12 May 2022 16:07:15 GMT
*/

:root {
--betterplace-text-decoration-underline: underline;
--betterplace-text-decoration-none: none;
--betterplace-text-case-none: none;
--betterplace-paragraph-spacing-1: 0.5rem;
--betterplace-paragraph-spacing-0: 0rem;
--betterplace-letter-spacing-0: 0%;
--betterplace-font-size-5: 3.5rem;
--betterplace-font-size-4: 2rem;
--betterplace-font-size-3: 1.5rem;
--betterplace-font-size-2: 1.125rem;
--betterplace-font-size-1: 1rem;
--betterplace-font-size-0: 0.875rem;
--betterplace-font-weights-fira-sans-1: Bold;
--betterplace-font-weights-fira-sans-0: Regular;
--betterplace-line-heights-3: 140%;
--betterplace-line-heights-2: 130%;
--betterplace-line-heights-1: 110%;
--betterplace-line-heights-0: 120%;
--betterplace-font-families-fira-sans: 'Fira Sans';
--betterplace-dropshadow-large: 0px 0px 24px 0px #00000029;
--betterplace-dropshadow-small: 0px 0px 16px 0px #00000014;
--betterplace-danger-red-800: #b11b3e;
--betterplace-danger-red-700: #d32b43;
--betterplace-danger-red-200: #ffc4c4;
--betterplace-warning-yellow-400: #f6ce46;
--betterplace-warning-yellow-100: #fff4d2;
--betterplace-tertiary-teal-800: #1e6761;
--betterplace-tertiary-teal-700: #2b8475;
--betterplace-tertiary-teal-500: #60b2a4;
--betterplace-secondary-me-blue-700: #005d90;
--betterplace-secondary-me-blue-500: #00a0c8;
--betterplace-secondary-me-blue-100: #e0f4f9;
--betterplace-secondary-purple-600: #6d2c64;
--betterplace-gray-900: #292929;
--betterplace-gray-700: #636363;
--betterplace-gray-300: #cccccc;
--betterplace-gray-200: #eeeeee;
--betterplace-gray-100: #f8f8f8;
--betterplace-shades-black: #000000;
--betterplace-shades-white: #ffffff;
--betterplace-newbrand-01-0-2-opacity: #30604933;
--betterplace-newbrand-activecolor: #43a4ba;
--betterplace-newbrand-pastell-6: #a4ffd3;
--betterplace-newbrand-pastell-5: #7bffbf;
--betterplace-newbrand-pastell-4: #7debb6;
--betterplace-newbrand-pastell-3: #67e1a6;
--betterplace-newbrand-pastell-2: #54d898;
--betterplace-newbrand-pastell-1: #47ba82;
--betterplace-newbrand-ruby-6: #17ff8f;
--betterplace-newbrand-ruby-5: #23e487;
--betterplace-newbrand-ruby-4: #00e476;
--betterplace-newbrand-ruby-3: #1dc976;
--betterplace-newbrand-ruby-2: #21bf73;
--betterplace-newbrand-ruby-1: #05bb63;
--betterplace-newbrand-dark-6: #3e8261;
--betterplace-newbrand-dark-5: #218756;
--betterplace-newbrand-dark-4: #017d41;
--betterplace-newbrand-dark-3: #006534;
--betterplace-newbrand-dark-2: #16603c;
--betterplace-newbrand-dark-1: #306049;
--betterplace-primary-me-orange-800: #6f1f06;
--betterplace-primary-me-orange-600: #db6038;
--betterplace-primary-me-orange-500: #ff854d;
--betterplace-primary-me-orange-100: #ffe3c2;
--betterplace-primary-green-800: #357c00;
--betterplace-primary-green-600: #85ac1c;
--betterplace-primary-green-500: #9ecb0a;
--betterplace-primary-green-100: #f5fccc;
--betterplace-link-underlined-text-decoration: var(--betterplace-text-decoration-underline);
--betterplace-link-underlined-text-case: var(--betterplace-text-case-none);
--betterplace-link-underlined-paragraph-spacing: var(--betterplace-paragraph-spacing-1);
--betterplace-link-underlined-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-link-underlined-font-size: var(--betterplace-font-size-1);
--betterplace-link-underlined-line-height: var(--betterplace-line-heights-3);
--betterplace-link-underlined-font-weight: var(--betterplace-font-weights-fira-sans-1);
--betterplace-link-underlined-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-small-text-bold-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-small-text-bold-text-case: var(--betterplace-text-case-none);
--betterplace-small-text-bold-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-small-text-bold-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-small-text-bold-font-size: var(--betterplace-font-size-0);
--betterplace-small-text-bold-line-height: var(--betterplace-line-heights-2);
--betterplace-small-text-bold-font-weight: var(--betterplace-font-weights-fira-sans-1);
--betterplace-small-text-bold-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-small-text-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-small-text-text-case: var(--betterplace-text-case-none);
--betterplace-small-text-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-small-text-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-small-text-font-size: var(--betterplace-font-size-0);
--betterplace-small-text-line-height: var(--betterplace-line-heights-2);
--betterplace-small-text-font-weight: var(--betterplace-font-weights-fira-sans-0);
--betterplace-small-text-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-link-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-link-text-case: var(--betterplace-text-case-none);
--betterplace-link-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-link-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-link-font-size: var(--betterplace-font-size-1);
--betterplace-link-line-height: var(--betterplace-line-heights-3);
--betterplace-link-font-weight: var(--betterplace-font-weights-fira-sans-1);
--betterplace-link-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-body-bold-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-body-bold-text-case: var(--betterplace-text-case-none);
--betterplace-body-bold-paragraph-spacing: var(--betterplace-paragraph-spacing-1);
--betterplace-body-bold-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-body-bold-font-size: var(--betterplace-font-size-1);
--betterplace-body-bold-line-height: var(--betterplace-line-heights-3);
--betterplace-body-bold-font-weight: var(--betterplace-font-weights-fira-sans-1);
--betterplace-body-bold-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-body-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-body-text-case: var(--betterplace-text-case-none);
--betterplace-body-paragraph-spacing: var(--betterplace-paragraph-spacing-1);
--betterplace-body-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-body-font-size: var(--betterplace-font-size-1);
--betterplace-body-line-height: var(--betterplace-line-heights-3);
--betterplace-body-font-weight: var(--betterplace-font-weights-fira-sans-0);
--betterplace-body-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-large-text-bold-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-large-text-bold-text-case: var(--betterplace-text-case-none);
--betterplace-large-text-bold-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-large-text-bold-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-large-text-bold-font-size: var(--betterplace-font-size-2);
--betterplace-large-text-bold-line-height: var(--betterplace-line-heights-3);
--betterplace-large-text-bold-font-weight: var(--betterplace-font-weights-fira-sans-1);
--betterplace-large-text-bold-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-large-text-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-large-text-text-case: var(--betterplace-text-case-none);
--betterplace-large-text-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-large-text-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-large-text-font-size: var(--betterplace-font-size-2);
--betterplace-large-text-line-height: var(--betterplace-line-heights-3);
--betterplace-large-text-font-weight: var(--betterplace-font-weights-fira-sans-0);
--betterplace-large-text-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-x-large-bold-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-x-large-bold-text-case: var(--betterplace-text-case-none);
--betterplace-x-large-bold-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-x-large-bold-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-x-large-bold-font-size: var(--betterplace-font-size-3);
--betterplace-x-large-bold-line-height: var(--betterplace-line-heights-2);
--betterplace-x-large-bold-font-weight: var(--betterplace-font-weights-fira-sans-1);
--betterplace-x-large-bold-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-x-large-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-x-large-text-case: var(--betterplace-text-case-none);
--betterplace-x-large-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-x-large-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-x-large-font-size: var(--betterplace-font-size-3);
--betterplace-x-large-line-height: var(--betterplace-line-heights-2);
--betterplace-x-large-font-weight: var(--betterplace-font-weights-fira-sans-0);
--betterplace-x-large-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-xx-large-bold-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-xx-large-bold-text-case: var(--betterplace-text-case-none);
--betterplace-xx-large-bold-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-xx-large-bold-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-xx-large-bold-font-size: var(--betterplace-font-size-4);
--betterplace-xx-large-bold-line-height: var(--betterplace-line-heights-0);
--betterplace-xx-large-bold-font-weight: var(--betterplace-font-weights-fira-sans-1);
--betterplace-xx-large-bold-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-xx-large-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-xx-large-text-case: var(--betterplace-text-case-none);
--betterplace-xx-large-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-xx-large-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-xx-large-font-size: var(--betterplace-font-size-4);
--betterplace-xx-large-line-height: var(--betterplace-line-heights-0);
--betterplace-xx-large-font-weight: var(--betterplace-font-weights-fira-sans-0);
--betterplace-xx-large-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-xxx-large-bold-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-xxx-large-bold-text-case: var(--betterplace-text-case-none);
--betterplace-xxx-large-bold-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-xxx-large-bold-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-xxx-large-bold-font-size: var(--betterplace-font-size-5);
--betterplace-xxx-large-bold-line-height: var(--betterplace-line-heights-1);
--betterplace-xxx-large-bold-font-weight: var(--betterplace-font-weights-fira-sans-1);
--betterplace-xxx-large-bold-font-family: var(--betterplace-font-families-fira-sans);
--betterplace-xxx-large-text-decoration: var(--betterplace-text-decoration-none);
--betterplace-xxx-large-text-case: var(--betterplace-text-case-none);
--betterplace-xxx-large-paragraph-spacing: var(--betterplace-paragraph-spacing-0);
--betterplace-xxx-large-letter-spacing: var(--betterplace-letter-spacing-0);
--betterplace-xxx-large-font-size: var(--betterplace-font-size-5);
--betterplace-xxx-large-line-height: var(--betterplace-line-heights-0);
--betterplace-xxx-large-font-weight: var(--betterplace-font-weights-fira-sans-0);
--betterplace-xxx-large-font-family: var(--betterplace-font-families-fira-sans);
}
9 changes: 9 additions & 0 deletions build/css/themes/at.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/**
* Do not edit directly
* Generated on Thu, 12 May 2022 16:07:15 GMT
*/

:root {
--betterplace-color-secondary: var(--betterplace-secondary-purple-600);
--betterplace-color-primary: var(--betterplace-primary-green-800);
}
9 changes: 9 additions & 0 deletions build/css/themes/me.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/**
* Do not edit directly
* Generated on Thu, 12 May 2022 16:07:15 GMT
*/

:root {
--betterplace-color-secondary: var(--betterplace-secondary-me-blue-500);
--betterplace-color-primary: var(--betterplace-primary-me-orange-500);
}
9 changes: 9 additions & 0 deletions build/css/themes/org.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/**
* Do not edit directly
* Generated on Thu, 12 May 2022 16:07:15 GMT
*/

:root {
--betterplace-color-secondary: var(--betterplace-tertiary-teal-500);
--betterplace-color-primary: var(--betterplace-primary-green-500);
}
Loading

0 comments on commit 01dfb8e

Please sign in to comment.