@pluralsight/design-tokens
Advanced tools
Comparing version 0.0.0-experimental-fa6443-20220223 to 0.0.0-experimental-fc9e67-20220304
/** | ||
* Do not edit directly | ||
* Generated on Wed, 23 Feb 2022 16:00:20 GMT | ||
* Generated on Fri, 04 Mar 2022 14:43:18 GMT | ||
*/ | ||
export const ColorFontBase = "#ff0000"; | ||
export const ColorFontSecondary = "#00ff00"; | ||
export const ColorFontTertiary = "#cccccc"; | ||
export const psBackground = "hsl(251deg 42% 10% / 100%)"; | ||
export const psBackgroundMedium = "hsl(245deg 36% 20% / 100%)"; | ||
export const psBackgroundStrong = "hsl(0deg 0% 0% / 92%)"; | ||
export const psBackgroundWeak = "hsl(245deg 36% 15% / 100%)"; | ||
export const psBorder = "hsl(234deg 30% 49% / 60%)"; | ||
export const psDangerBackground = "hsl(331deg 100% 25% / 100%)"; | ||
export const psDangerBorder = "hsl(325deg 100% 50% / 100%)"; | ||
export const psDangerSelectedText = "hsl(345deg 100% 82% / 100%)"; | ||
export const psDangerText = "hsl(348deg 100% 93% / 100%)"; | ||
export const psInfoBackground = "hsl(204deg 100% 20% / 100%)"; | ||
export const psInfoBorder = "hsl(202deg 100% 50% / 100%)"; | ||
export const psInfoIcon = "hsl(212deg 100% 76% / 100%)"; | ||
export const psInfoText = "hsl(216deg 100% 91% / 100%)"; | ||
export const psSelectedBackground = "hsl(247deg 67% 60% / 100%)"; | ||
export const psSelectedBackgroundMedium = "hsl(234deg 30% 49% / 50%)"; | ||
export const psSelectedBackgroundStrong = "hsl(249deg 67% 25% / 100%)"; | ||
export const psSuccessBackground = "hsl(153deg 100% 14% / 100%)"; | ||
export const psSuccessBorder = "hsl(156deg 99% 36% / 100%)"; | ||
export const psSuccessIcon = "hsl(149deg 100% 67% / 100%)"; | ||
export const psSuccessText = "hsl(142deg 100% 88% / 100%)"; | ||
export const psText = "hsl(0deg 0% 100% / 100%)"; | ||
export const psTextWeak = "hsl(244deg 67% 83% / 100%)"; | ||
export const psTextMedium = "hsl(253deg 100% 94% / 100%)"; | ||
export const psWarningBackground = "hsl(46deg 100% 20% / 100%)"; | ||
export const psWarningBorder = "hsl(46deg 100% 45% / 100%)"; | ||
export const psWarningIcon = "hsl(37deg 100% 83% / 100%)"; | ||
export const psWarningText = "hsl(36deg 100% 92% / 100%)"; |
{ | ||
"name": "@pluralsight/design-tokens", | ||
"version": "0.0.0-experimental-fa6443-20220223", | ||
"version": "0.0.0-experimental-fc9e67-20220304", | ||
"description": "Design tokens for Pluralsight.", | ||
@@ -9,4 +9,10 @@ "main": "build/index.js", | ||
"build/scss/_variables.scss", | ||
"build/index.js" | ||
"build/index.js", | ||
"normalize.css", | ||
"fonts.css" | ||
], | ||
"sideEffects": [ | ||
"build/css/*.css", | ||
"build/scss/*.scss" | ||
], | ||
"scripts": { | ||
@@ -19,3 +25,5 @@ "build": "style-dictionary build", | ||
"devDependencies": { | ||
"style-dictionary": "^3.1.1" | ||
"@types/yaml": "^1", | ||
"style-dictionary": "^3.7.0", | ||
"yaml": "^1.10.2" | ||
}, | ||
@@ -22,0 +30,0 @@ "keywords": [ |
205
README.md
@@ -1,189 +0,82 @@ | ||
# Basic Style Dictionary | ||
# Design Tokens | ||
This example code is bare-bones to show you what this framework can do. If you have the style-dictionary module installed globally, you can `cd` into this directory and run: | ||
A project that creates the public tokens available for all platforms which is | ||
built using [style dictionary](https://amzn.github.io/style-dictionary/#/). | ||
```bash | ||
style-dictionary build | ||
``` | ||
## Quick Start | ||
You should see something like this output: | ||
To get the project up an running, all you need to do is make sure your deps are installed for this workspace. | ||
In the **project root** (not this workspace), run | ||
```bash | ||
yarn install | ||
``` | ||
Copying starter files... | ||
Source style dictionary starter files created! | ||
This will setup all workspaces in this repo in addition to install all the deps | ||
needed to successfully use this workspace. | ||
Running `style-dictionary build` for the first time to generate build artifacts. | ||
### There is no dev environment | ||
With style-dictionary, you are just creating static Yaml files, so there is no dev server or anything to run while adding tokens. However, we _highly recommend_ you make sure all extensions | ||
that are [recommended]('../../.vsode/extensions.json) are installed in order to prevent triggering errors in our CI process. | ||
scss | ||
✔︎ build/scss/_variables.scss | ||
## Project Structure | ||
android | ||
✔︎ build/android/font_dimens.xml | ||
✔︎ build/android/colors.xml | ||
There are two types of tokens to create: private or public. | ||
compose | ||
✔︎ build/compose/StyleDictionaryColor.kt | ||
✔︎ build/compose/StyleDictionarySize.kt | ||
### Creating private tokens | ||
ios | ||
✔︎ build/ios/StyleDictionaryColor.h | ||
✔︎ build/ios/StyleDictionaryColor.m | ||
✔︎ build/ios/StyleDictionarySize.h | ||
✔︎ build/ios/StyleDictionarySize.m | ||
To create a new private token, simply add the token to the **base** directory. Everything inside here will get filtered out during the build process. Private tokens are only meant to be used as reference items for public tokens. | ||
ios-swift | ||
✔︎ build/ios-swift/StyleDictionary.swift | ||
### Creating public tokens | ||
ios-swift-separate-enums | ||
✔︎ build/ios-swift/StyleDictionaryColor.swift | ||
✔︎ build/ios-swift/StyleDictionarySize.swift | ||
``` | ||
Public tokens are the [semantic tokens](https://design.pluralsight.com/development/packages/tokens/intro#naming-convention) we ship to each team/product within Pluralsight. Therefore, it should rarely be updated or added to unless there is a new branding **color** change. | ||
Good for you! You have now built your first style dictionary! Moving on, take a look at what we have built. This should have created a build directory and it should look like this: | ||
This is to help keep all of our teams apps as performant as possible since the quanity and _usage_ of tokens **can make a negative impact** in browsers. | ||
``` | ||
├── README.md | ||
├── config.json | ||
├── tokens/ | ||
│ ├── color/ | ||
│ ├── base.json | ||
│ ├── font.json | ||
│ ├── size/ | ||
│ ├── font.json | ||
├── build/ | ||
│ ├── android/ | ||
│ ├── font_dimens.xml | ||
│ ├── colors.xml | ||
│ ├── compose/ | ||
│ ├── StyleDictionaryColor.kt | ||
│ ├── StyleDictionarySize.kt | ||
│ ├── scss/ | ||
│ ├── _variables.scss | ||
│ ├── ios/ | ||
│ ├── StyleDictionaryColor.h | ||
│ ├── StyleDictionaryColor.m | ||
│ ├── StyleDictionarySize.h | ||
│ ├── StyleDictionarySize.m | ||
│ ├── ios-swift/ | ||
│ ├── StyleDictionary.swift | ||
│ ├── StyleDictionaryColor.swift | ||
│ ├── StyleDictionarySize.swift | ||
``` | ||
## Testing your updates | ||
If you open `config.json` you will see there are 5 platforms defined: scss, android, compose, ios, and ios-swift. Each platform has a transformGroup, buildPath, and files. The buildPath and files of the platform should match up to the files what were built. The files built should look like these: | ||
To test your updates, run the build command for this workspace in the project root (not this workspace). | ||
**Android** | ||
```xml | ||
<!-- font_dimens.xml --> | ||
<resources> | ||
<dimen name="size_font_small">12.00sp</dimen> | ||
<dimen name="size_font_medium">16.00sp</dimen> | ||
<dimen name="size_font_large">32.00sp</dimen> | ||
<dimen name="size_font_base">16.00sp</dimen> | ||
</resources> | ||
<!-- colors.xml --> | ||
<resources> | ||
<color name="color_base_gray_light">#ffcccccc</color> | ||
<color name="color_base_gray_medium">#ff999999</color> | ||
<color name="color_base_gray_dark">#ff111111</color> | ||
<color name="color_base_red">#ffff0000</color> | ||
<color name="color_base_green">#ff00ff00</color> | ||
<color name="color_font_base">#ffff0000</color> | ||
<color name="color_font_secondary">#ff00ff00</color> | ||
<color name="color_font_tertiary">#ffcccccc</color> | ||
</resources> | ||
```bash | ||
yarn workspace @pluralsight/design-tokens run build | ||
``` | ||
**Compose** | ||
You should see something like this output: | ||
```kotlin | ||
object StyleDictionaryColor { | ||
val colorBaseGrayDark = Color(0xff111111) | ||
val colorBaseGrayLight = Color(0xffcccccc) | ||
val colorBaseGrayMedium = Color(0xff999999) | ||
val colorBaseGreen = Color(0xff00ff00) | ||
val colorBaseRed = Color(0xffff0000) | ||
val colorFontBase = Color(0xffff0000) | ||
val colorFontSecondary = Color(0xff00ff00) | ||
val colorFontTertiary = Color(0xffcccccc) | ||
} | ||
object StyleDictionarySize { | ||
/** the base size of the font */ | ||
val sizeFontBase = 16.00.sp | ||
/** the large size of the font */ | ||
val sizeFontLarge = 32.00.sp | ||
/** the medium size of the font */ | ||
val sizeFontMedium = 16.00.sp | ||
/** the small size of the font */ | ||
val sizeFontSmall = 12.00.sp | ||
} | ||
``` | ||
Copying files... | ||
**SCSS** | ||
Source style dictionary files created! | ||
```scss | ||
// variables.scss | ||
$color-base-gray-light: #cccccc; | ||
$color-base-gray-medium: #999999; | ||
$color-base-gray-dark: #111111; | ||
$color-base-red: #ff0000; | ||
$color-base-green: #00ff00; | ||
$color-font-base: #ff0000; | ||
$color-font-secondary: #00ff00; | ||
$color-font-tertiary: #cccccc; | ||
$size-font-small: 0.75rem; | ||
$size-font-medium: 1rem; | ||
$size-font-large: 2rem; | ||
$size-font-base: 1rem; | ||
``` | ||
Running `style-dictionary build` to generate build artifacts. | ||
**iOS** | ||
js | ||
✔︎ build/index.js | ||
```objc | ||
#import "StyleDictionaryColor.h" | ||
css | ||
✔︎ build/css/variables.css | ||
@implementation StyleDictionaryColor | ||
scss | ||
✔︎ build/scss/_variables.scss | ||
+ (UIColor *)color:(StyleDictionaryColorName)colorEnum{ | ||
return [[self values] objectAtIndex:colorEnum]; | ||
} | ||
android | ||
✔︎ build/android/font_dimens.xml | ||
✔︎ build/android/colors.xml | ||
+ (NSArray *)values { | ||
static NSArray* colorArray; | ||
static dispatch_once_t onceToken; | ||
ios | ||
✔︎ build/ios/StyleDictionaryColor.h | ||
✔︎ build/ios/StyleDictionaryColor.m | ||
No properties for StyleDictionarySize.h. File not created. | ||
No properties for StyleDictionarySize.m. File not created. | ||
dispatch_once(&onceToken, ^{ | ||
colorArray = @[ | ||
[UIColor colorWithRed:0.800f green:0.800f blue:0.800f alpha:1.000f], | ||
[UIColor colorWithRed:0.600f green:0.600f blue:0.600f alpha:1.000f], | ||
[UIColor colorWithRed:0.067f green:0.067f blue:0.067f alpha:1.000f], | ||
[UIColor colorWithRed:1.000f green:0.000f blue:0.000f alpha:1.000f], | ||
[UIColor colorWithRed:0.000f green:1.000f blue:0.000f alpha:1.000f], | ||
[UIColor colorWithRed:1.000f green:0.000f blue:0.000f alpha:1.000f], | ||
[UIColor colorWithRed:0.000f green:1.000f blue:0.000f alpha:1.000f], | ||
[UIColor colorWithRed:0.800f green:0.800f blue:0.800f alpha:1.000f] | ||
]; | ||
}); | ||
ios-swift | ||
✔︎ build/ios-swift/StyleDictionary.swift | ||
return colorArray; | ||
} | ||
@end | ||
ios-swift-separate-enums | ||
✔︎ build/ios-swift/StyleDictionaryColor.swift | ||
No properties for StyleDictionarySize.swift. File not created. | ||
``` | ||
Pretty nifty! This shows a few things happening: | ||
1. The build system does a deep merge of all the token JSON files defined in the `source` attribute of `config.json`. This allows you to split up the token JSON files however you want. There are 2 JSON files with `color` as the top level key, but they get merged properly. | ||
1. The build system resolves references to other design tokens. `{size.font.medium.value}` gets resolved properly. | ||
1. The build system handles references to token values in other files as well as you can see in `tokens/color/font.json`. | ||
Now let's make a change and see how that affects things. Open up `tokens/color/base.json` and change `"#111111"` to `"#000000"`. After you make that change, save the file and re-run the build command `style-dictionary build`. Open up the build files and take a look. | ||
**Huzzah!** | ||
Now go forth and create! Take a look at all the built-in [transforms](https://amzn.github.io/style-dictionary/#/transforms?id=pre-defined-transforms) and [formats](https://amzn.github.io/style-dictionary/#/formats?id=pre-defined-formats). | ||
Depending on which platform you are testing, just reference the build file created. |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12411
7
235
3
83
1